我试图使用我的正则表达式选项:忽略大小写,多行,并忽略空格。但它无法匹敌。这是正则表达式:
" \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
,因为表达式使用表达式
我一直在尝试使用不同的模式而无济于事。
非常感谢您的帮助。
答案 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}))