在正则表达式中匹配单词之前或之后的字符,但不能同时匹配两者

gsi*_*011 5 regex

假设我需要匹配一个单词,word其中单词之前或之后可能有句点,但不能两者都有。那么word.word、 和word.应该匹配,但.word.不应该匹配。我如何匹配这个并捕获该词之前和之后发生的事情?

这是一个简化的示例,我需要将其扩展到更复杂的情况。例如,现在符号.and'可能出现在单词之前或之后,但它们只能出现一次。例如,.word'wordword.'.word'只是一些有效匹配,但类似的内容.'word.'不应该匹配,甚至.'word'.

上面的示例是我的主要优先事项,但额外的好处是添加句号和撇号的顺序。因此'.word.'word应该都匹配。我认为对此有效的一种方法是\.?'?|'?\.?word,但我希望有某种方法,其中 OR 子句中的语句数量不依赖于符号的数量。

use*_*064 0

好的。为了正确处理出现word在字符串开头或结尾的情况,它需要更多的时间。

 "(?:\.word(?:[^.]|$))|(?:(?:[^.]|^)word(?:[^.]|$))|(?:(?:[^.]|^)word\.)"
Run Code Online (Sandbox Code Playgroud)

LookaheadsregexpLookbehinds相同(在 python 中测试):

 "(?:\.word(?:(?!\.)|$))|(?:(?:(?<!\.)|^)word(?:(?!\.)|$))|(?:(?:(?<!\.)|^)word\.)"
Run Code Online (Sandbox Code Playgroud)

有用:

 re.findall(pattern(above), '.word. .word .word. word.'") // return ['.word ', ' word.'] 
Run Code Online (Sandbox Code Playgroud)