我有以下正则表达式:
((^|[^a-zA-ZäöåüßÄÖÅÜ])'+targetword+'(?![a-zA-ZäöåüßÄÖÅÜ]))(?![^<]*(?:<\/script|>))
我正在使用它来查找targetword
并从中创建一个链接,但仅当该单词不是另一个单词的一部分时才会使用。
编辑:正则表达式用于JavaScript中的RegExp对象。
换句话说,'the'
会被关联,但不会o'the'r
或'the'apy
。
问题是上面的表达式还包括链接中的前导空格。因此,'the'
在链接文字中变为' the'
。
我找到了一些解决方案来查找和排除此站点中的前导空格,但我还没有找到一种方法将它们嵌入到上面的表达式中,因为正则表达式确实不是我的强项。
答案 0 :(得分:1)
基本上你只需要将空格定义为不属于你的匹配组:
(?:(?:^|[^a-zA-ZäöåüßÄÖÅÜ])\s*(targetword)(?![a-zA-ZäöåüßÄÖÅÜ]))(?![^<]*(?:<\/script|>))
应该诀窍(注意MATCHED,但在targetword
前面排除了空格)
当然,用你的变量替换targetword。
答案 1 :(得分:1)
这个正则表达式与您正在寻找的不完全相同,但它可能会更好。
"\b" + targetword + "\b"
\ b表示单词应该是独立的。 这还包括符号,空格和数字。
如果这不是您想要的,请为您带来的不便表示歉意。
答案 2 :(得分:0)
您可以使用"\b" + targetword + "\b"
这适用于大多数情况,但这会匹配单词donald
和字符串O'Donald
或匹配Sarah
字符串{ {1}}。
我会使用外观并展望未来验证
这些允许的字符可以根据您的实际用例进行调整。
Sarah's car is broken
"(?<=[\s",.]|^)" + targetword + "(?=[\s",.\r\n]|$)"