假设我们有以下文字信息:
FEE AA XXX093 Some Fee bla bla bla
FEE BB YYY111 Another Fee bla bla bla
我可以使用此正则表达式获取费用代码(AA)和费用金额(XXX093):
FEE (?<feecode>[A-Z]{2}) {7}(?<feeamt>[A-Z]{3}[0-9. ]{1,8}).*\n
但是这只捕获了第一行(AA)费用的这些信息,如何修改正则表达式以获取两个(或X个)费用?
答案 0 :(得分:2)
只需删除最后一个FEE (?<feecode>[A-Z]{2}) {7}(?<feeamt>[A-Z]{3}[0-9.]{1,8})
字符,然后从字符类中删除空格。因此,第二个捕获组也不会捕获跟随费用的空间。
\n
答案 1 :(得分:2)
删除\n
,因为它阻止匹配字符串中的最后一行(因为它没有FEE (?<feecode>[A-Z]{2}) {7}(?<feeamt>[A-Z]{3}[0-9. ]{1,8}).*
结束):
$
这是demo。
或者,如果可以指定字符串的结尾(FEE (?<feecode>[A-Z]{2}) {7}(?<feeamt>[A-Z]{3}[0-9. ]{1,8}).*(?:\n|$)
):
multiline
以下是a variation of the regex ^FEE (?<feecode>[A-Z]{2}) {7}(?<feeamt>[A-Z]{3}[0-9. ]{1,8}).*$
选项,仅匹配单独行的信息:
for