我遇到了一个匹配给定单词的所有实例但与partials不匹配的正则表达式。我正在扫描的文本将是原始HTML。
这是我现在的正则表达式:
/(|>|^|;|,| )(detroit|to|christmas|holiday|test|his)(<| |\.|;|,|\!|\?|\)|$)/i
正则表达式将与粗体字匹配:
请务必查看Agile以获取最新版本的适用服务和 安装程序!此数据库中包含的步骤适用于 仅限故障排除,而不是执行服务。这不是一个 受控文件,可能不会分发到非Stryker 人员
圣诞节假期圣诞节圣诞节假期是底特律 圣诞节假期
如果我将正则表达式修改为:
/(|>|^|;|,| )?(detroit|to|christmas|holiday|test|his)(<| |\.|;|,|\!|\?|\)|$)/i
正则表达式匹配以下内容:
请务必检查敏捷是否有适用的服务和安装程序的la 测试版本! t 他的数据库中包含的步骤仅用于故障排除,而不用于执行服务。 T 他的不是受控文件,可能不会分发 非Stryker人员
圣诞假期圣诞假期是底特律 圣诞假期
第二个版本匹配它应该的所有单词但由于?修饰符它也匹配我想跳过的部分。如何修改正则表达式,以便“圣诞节”的匹配不会使下一个可能的匹配空间变得粗糙?
答案 0 :(得分:0)
使用字边界\b
,我认为您希望每行匹配多个组(最后g
):
/\b(detroit|to|christmas|holiday|test|his)\b/gi
答案 1 :(得分:0)
您还没有说过您正在使用的正则表达式引擎,而是您所需要的标准方法,例如: Perl,如果引擎有它,则是零宽度字边界说明符\b
:
/(|>|^|;|,| )?\b(detroit|to|christmas|holiday|test|his)\b(<| |\.|;|,|\!|\?|\)|$)/i
对于你的第二个问题,保持引擎免于消费的标准方法是&#34;文字是使用&#34; lookahead&#34;匹配(?=...)
,这需要前瞻性regexp,但不消耗它(因此可用于后续匹配):
/(|>|^|;|,| )\b(detroit|to|christmas|holiday|test|his)\b(?=<| |\.|;|,|\!|\?|\)|$)/i
答案 2 :(得分:0)
答案 3 :(得分:0)
我认为这就是你要找的东西:
/\b(detroit|to|christmas|holiday|test|his)+\b/gi