捕获后面没有符号的单词

Capture words not followed by symbol

本文关键字:符号 单词      更新时间:2023-09-26

我需要捕获所有(英语)单词,但缩写除外,其模式为:

"_any-word-symbols-including-dash." 

(所以开头有下划线,结尾有点,任何字母,中间有破折号)

我试过这样的东西:

/'b([A-Za-z-^]+)'b[^'.]/g

但我似乎不明白如何处理负面比赛。

更新:

我不仅需要匹配,还需要将单词包装在一些标签中:

"a some words _abbr-abrr.a here"我应该得到:

<w>a</w> <w>some</w> <w>words</w> _abbr-abbr. <w>a</w> <w>here</w>

所以我需要使用替换为正确的正则表达式:

test.replace(/correct regex/, '<w>$1</w>')

负前瞻是(?!)

所以你可以使用:

/'b([^_'s]'w*(?!'.))'b/g

不幸的是,javascript中并没有后备代码,所以您不能用"不以_为前缀"来实现类似的技巧。

示例:

> a = "a some words _abbr. a here"
> a.replace(/'b([^_'s]'w*(?!'.))'b/g, "<w>$1</w>")
"<w>a</w> <w>some</w> <w>words</w> _abbr. <w>a</w> <w>here</w>"

根据您对-的评论。更新的正则表达式为:

/'b([^_'s'-]['w'-]*(?!'.))'b/g
> "abc _abc-abc. abc".replace(/'b([^_'s'-]['w'-]*(?!'.))'b/g, "<w>$1</w>")
"<w>abc</w> _abc-abc. <w>abc</w>"