我想在特定单词之前获得尽可能多的单词,但这就是从所有行中获取所有字符。
([\w\s]+)( Subtract| Add) is (\d+) credits
如果该行与完整表达式不匹配,则无法匹配,为什么有些行仍然匹配?
This line cannot match
This line cannot match too
No way to match
Why is matching this line
Apple Banana Orange Add is 34 credits
Watermelon Strawberry Subtract is 20 credits
Sugar Add is 8 credits
那是一个样本https://regexr.com/3to7l
谢谢
答案 0 :(得分:0)
问题在于\s
可以匹配换行符,并将整个输入视为一个大匹配。
要修复您的正则表达式:
将第一部分[\w\s]+
替换为.+
。这将给出:
(.+)( Subtract| Add) is (\d+) credits
请参阅此处: RegexStorm working example
注意:这实际上改变了您的意图,因为.+
现在可以匹配非单词和非空格字符。如果这是一个问题,则可能要使用^
,$
,\A
或\Z
。
有关更多信息,请参见此处,例如:https://www.mikesdotnetting.com/article/46/c-regular-expressions-cheat-sheet
答案 1 :(得分:0)