JS Pig诗匹配子字符串与正则表达式

Posted

技术标签:

【中文标题】JS Pig诗匹配子字符串与正则表达式【英文标题】:JS Pig poem matching substring with Regexp 【发布时间】:2021-11-10 17:32:33 【问题描述】:

我有一个带有句子的长字符串,每个句子都包含一个数字。每个句子都用 /X 分隔。有一个给定的数字,我怎样才能只匹配和提取包含该数字的一个句子?

"\X 动物 0000 我真的很喜欢 \X 最重要的是猪。222 \X 猪是高贵的。猪很聪明 3333,\X 猪是 5555 彬彬有礼。\X 但是,偶尔,打破这个 6666 规则,\X 一个人遇到 7777 一只傻猪。\X"

例如,我想提取数字为 5555 的句子,得到这个: " 猪 5555 彬彬有礼。"

如何用 JS 正则表达式做到这一点?我的代码与全文匹配:

str.match(/\\X.*5555.*\\X/);

【问题讨论】:

【参考方案1】:

您需要确保在.* 中排除与\\X 匹配的情况。

这对我有用:

/[^\\X]*5555[^\\X]*/g

如果您想排除句子的第一个空格,请使用此选项, 但是它需要对 Lookbehind 的支持:

/(?<=\\X )[^\\X]*5555[^\\X]*/g

【讨论】:

代码正在运行(我在一个正则表达式练习网站上检查了它,它给出了我需要的匹配项),但是在 Chrome 控制台中它不起作用。我有最新版本的 Chrome。 Chrome 不支持正向回溯吗? 这里应该支持 Lookbehind:caniuse.com/?search=lookbehind

以上是关于JS Pig诗匹配子字符串与正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

JS正则表达式

js常见正则表达式验证及方法

js 正则获取匹配部分最后一个内容

5.2.1 正则表达式语法与子模式扩展语法

JS正则表达式之--?:

正则表达式 - 将子字符串与字符串匹配