javascript - 正则表达式,从最后开始匹配

标签 javascript regex

我有这样的文字:

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) - saidwrites 字符序列
    • : - 冒号
    • .* - 任何 0+ 个字符(如果未使用 DOTALL 修饰符则换行符除外)直到行/字符串的末尾。

关于javascript - 正则表达式,从最后开始匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40862562/

相关文章:

javascript - csv 输入到 nvd3 图表的显示错误(与时间格式相关)

javascript - Vue js非子父级与事件总线的通信不起作用

java - 索引 nnn 附近的未闭合字符类

javascript - 如果没有尾随数字,简单的正则表达式将许多零变为单个零

php - 用于匹配(并删除)包含文件中的多行 PHP 代码的正则表达式模式

javascript - jQuery 悬停函数

c# - Response.BinaryWrite() 在模态弹出窗口中不起作用

javascript - 在 Javascript 中获取 API 返回 [object, object]

javascript - 如何使用 JS 匹配检查字符串中所有可能的大小写?

python - 匹配引用的 csv 中未转义的引号