我有这样的文字:
要么
我想将所有内容从“写入”到结尾。
看起来很简单:(said | writes):. *
但。我的文本示例如下所示:
在这里,我只想说“说:一些内容”。
但是我的正则表达式将所有内容从“写入”到结尾。
如何解决这个问题呢?
最佳答案
用^.*
前缀正则表达式并捕获它:
^.*((?:said|writes):.*)
见regex demo
初始
.*
将抓取整行(如果使用DOTALL修饰符,则将捕获整个字符串),并将回溯以容纳字符串/行中最后的said:
或writes:
。(?:said|writes)
中的非捕获组仅用于分组目的,因此只有一个ID = 1的捕获组。详细信息:
^
-字符串/行 anchor 的开始(取决于所使用的修饰符).*
-尽可能多的0+个字符(因为*
是贪婪的量词)(如果未使用DOTALL修饰符,则不包含换行符)((?:said|writes):.*)
-组1捕获:(?:said|writes)
-said
或writes
字符序列:
-冒号.*
-直到行/字符串末尾的任何0+字符(如果未使用DOTALL修饰符,则为换行符)。