【发布时间】:2012-06-23 20:12:15
【问题描述】:
假设我需要匹配一个单词word,其中可能在单词之前或之后有句点,但不能同时存在。那么word、.word和word.应该匹配,但.word.不应该匹配。我将如何匹配它并捕捉单词前后发生的事情?
这是一个简化的示例,我需要将其扩展到更复杂的情况。例如,现在符号. 和' 可能出现在单词之前或之后,但它们只能出现一次。例如,.word、'word、word.' 和 .word' 只是有效匹配项中的一小部分,但像 .'word.' 这样的东西不应该匹配,甚至是 .'word'。
上面的例子是我的主要优先事项,但额外的好处是句号和撇号的添加顺序。因此'.word 和.'word 应该都匹配。我认为可以解决此问题的一种方法是\.?'?|'?\.?word,但我希望通过某种方式使 OR 子句中的语句数量不依赖于符号的数量。
【问题讨论】:
-
当你说之前或之后的文字句点时,你是指文字句点还是正则表达式句点([几乎]任何字符的通配符)?
-
这些匹配是否会出现在较大的字符串(例如
something here .word other stuff)的中间,或者可以安全地假设.word是整个字符串? -
word.和.'word'.是否匹配错误,而word和.'word'匹配正确? -
@Wiseguy 会有多个相同格式的单词。所以一个可能的字符串是
.word word. .word。因此所有的词都是这种格式。这些词将是不同的词,但我可以自己弄清楚。现在你可以假设这个字符串是这样的。 @LarryBattle 词。是一个很好的匹配。 。'单词'。是一场糟糕的比赛。词是一个很好的匹配。 .'word' 不匹配。另一种说法是两个符号(句号和撇号)总共可以出现 0 或 1 次,但那 1 次可以在单词之前或之后。 -
单词“word”开始看起来很奇怪。
标签: regex