每行重复一次正则表达式

时间:2015-04-22 10:20:54

标签: regex

假设我们有以下文字信息:

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个)费用?

2 个答案:

答案 0 :(得分:2)

只需删除最后一个FEE (?<feecode>[A-Z]{2}) {7}(?<feeamt>[A-Z]{3}[0-9.]{1,8}) 字符,然后从字符类中删除空格。因此,第二个捕获组也不会捕获跟随费用的空间。

\n

DEMO

答案 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