我有这样的文字:



要么



我想将所有内容从“写入”到结尾。

看起来很简单:(said | writes):. *
但。我的文本示例如下所示:



在这里,我只想说“说:一些内容”。
但是我的正则表达式将所有内容从“写入”到结尾。
如何解决这个问题呢?

最佳答案

^.*前缀正则表达式并捕获它:

^.*((?:said|writes):.*)

regex demo

初始.*将抓取整行(如果使用DOTALL修饰符,则将捕获整个字符串),并将回溯以容纳字符串/行中最后的said:writes:
(?:said|writes)中的非捕获组仅用于分组目的,因此只有一个ID = 1的捕获组。

详细信息:
  • ^-字符串/行 anchor 的开始(取决于所使用的修饰符)
  • .*-尽可能多的0+个字符(因为*是贪婪的量词)(如果未使用DOTALL修饰符,则不包含换行符)
  • ((?:said|writes):.*)-组1捕获:
  • (?:said|writes)-saidwrites字符序列
  • :-冒号
  • .*-直到行/字符串末尾的任何0+字符(如果未使用DOTALL修饰符,则为换行符)。
  • 08-07 09:29