Microsoft正则表达式模式无法匹配

时间:2016-04-30 18:01:54

标签: c# regex

我试图使用我的正则表达式选项:忽略大小写,多行,并忽略空格。但它无法匹敌。这是正则表达式:

"  
\s+(?(U|US|USD)\s*\$\s([a-z0-9$,.'_-]+)(\s[a-z0-9$,.'_-]+)+)\s+(\-\s(Savings|Chequing|\w+)\s(\d{5})\-(\d{7})\s*){0,1}
(Savings|Chequing|\w+)\s(?\d{5}\-(\d{7}))\s+(Available Balance[:]\s[$](?[0-9.,]{3,20})\sUSD\s
[$](?[0-9,.]{3,20}))
"

以下是我想要匹配的字符串示例:

"Close Quick Menu Button
                 U$ smith Hi interest2 
Savings 04237-4500385 Available Balance: $0.00 USD 
$0.00 USD 
Open r"

我认为我犯了错误是(?<availBal>[0-9.,]{3,20})\s,因为表达式使用表达式

的前一部分匹配

我一直在尝试使用不同的模式而无济于事。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我注意到的是你的正则表达式中间有Available Balance

您需要将其更改为Available\sBalance。当它说它忽略空格时,这意味着正则表达式中的空格而不是你匹配的字符串。

这个正则表达式有效。我将(?更改为(?:,然后添加了+

\s+(?:(U|US|USD)\s*\$\s([a-z0-9$,.'_-]+)(\s[a-z0-9$,.'_-]+)+)\s+(\-\s(Savings|Chequing|\w+)\s(\d{5})\-(\d{7})\s*){0,1}(Savings|Chequing|\w+)\s(?:\d{5}\-(\d{7}))\s+(Available\sBalance[:]\s[$](?:[0-9.,]{3,20})\sUSD\s+[$](?:[0-9,.]{3,20}))

但你忽略了空白,所以为什么不写清楚呢?我还改变了一些不必要的东西:

\s+(?:(U|US|USD) \s* \$ \s ([a-z0-9$,.'_-]+)
   (\s[a-z0-9$,.'_-]+)+)
\s+(-\s(Savings|Chequing|\w+)
\s (\d{5})-(\d{7})\s*)?
   (Savings|Chequing|\w+)
\s (?:\d{5}-(\d{7}))
\s+(Available \s Balance: \s \$ (?:[0-9.,]{3,20}) \s USD
\s+\$(?:[0-9,.]{3,20}))