我正试图通过三行捕获下面的3个数字
xxxxxxxx
xxxxxxxx
Matches
1 - 60
out of 92
xxxxxxxx
xxxxxxxx
我就是无法使正则表达式字符串正常工作。到目前为止,我有以下内容:-
Matches.*?n.*[0-9]*.*?-.*?[0-9]*nout of.*?[0-9]*
我已经在一些在线regex测试程序和c#中尝试过了。
新信息
我发现实际的问题是因为输入文本包含一个CR(没有LF)来指示新行,所以显然的匹配不起作用。所以现在为了匹配我正在使用的新行[\r|\r\n]。
将[0-9]*
转换为[0-9]+
,并在其周围添加括号以捕获它。
Matches.*?n.*([0-9]+).*?-.*?([0-9]+)nout of.*?([0-9]+)
演示
- CCD_ 3重复先前的令牌零次或更多次
- CCD_ 4重复先前的令牌一次或多次
或
如果在[0-9]
之后使用*
,则需要将以前的模式.*
更改为.*?
,因为默认情况下*
是贪婪的。您需要在*
之后添加?
,使其成为非贪婪。这样它就不会吃掉后面的零位或更多的数字。
Matches.*?n.*?([0-9]*).*?-.*?([0-9]*)nout of.*?([0-9]*)n
如果使用此Matches.*?n.*?([0-9]*).*?-.*?([0-9]*)nout of.*?([0-9]*)
正则表达式,由于[0-9]*
(零位或更多位),它不会捕获最后一位数字,因此还需要匹配以下字符才能捕获最后一个数字。
演示
试试这个:
(?m)Matches[sS]*?nout of[ ]*[0-9]+
.*?Matches|(d+)s*-s*(d+).*?outs*ofs*(d+)
你可以试试这个。不要忘记放置标志s
和g
。请参阅演示。
http://regex101.com/r/lS5tT3/76