我有这样的文字:
Some guy writes: some content.
或
Some guy said: some content.
我想获取从“写入”到结尾的所有内容。
它看起来很简单:(说 | 写):。 *
但是。我的文本示例如下所示:
Some guy writes: blablabla, said: some content
在这里我只想得到“说:一些内容”。 但是我的正则表达式从“写入”到最后获取所有内容。 如何解决这个问题?
最佳答案
在正则表达式前面添加 ^.*
并捕获它:
^.*((?:said|writes):.*)
参见 regex demo
初始 .*
将抓取整行(或字符串,如果使用 DOTALL 修饰符)并回溯以适应 said:
或 writes:
是字符串/行上的最后一个。
(?:said|writes)
中的非捕获组仅用于分组目的,因此只有一个 ID = 1 的捕获组。
详细信息:
^
- 字符串/行 anchor 的开始(取决于使用的修饰符).*
- 任何 0+ 个字符尽可能多(因为*
是一个贪婪量词) (如果不使用 DOTALL 修饰符,换行符除外)((?:said|writes):.*)
- 第 1 组捕获:(?:said|writes)
-said
或writes
字符序列:
- 冒号.*
- 任何 0+ 个字符(如果未使用 DOTALL 修饰符则换行符除外)直到行/字符串的末尾。
关于javascript - 正则表达式,从最后开始匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40862562/