Python 如何匹配不匹配的单词';t以X开头,但以Y结尾,带正则表达式
榜样Python 如何匹配不匹配的单词';t以X开头,但以Y结尾,带正则表达式,python,regex,Python,Regex,榜样 X=This Y=That 不匹配 ThisWordShouldNotMatchThat ThisWordShouldNotMatch WordShouldNotMatch AWordShouldMatchThat 匹配 ThisWordShouldNotMatchThat ThisWordShouldNotMatch WordShouldNotMatch AWordShouldMatchThat 我尝试了(?但似乎不容易:) 作为自由间距正则表达式: ^
X=This
Y=That
不匹配强>
ThisWordShouldNotMatchThat
ThisWordShouldNotMatch
WordShouldNotMatch
AWordShouldMatchThat
匹配强>
ThisWordShouldNotMatchThat
ThisWordShouldNotMatch
WordShouldNotMatch
AWordShouldMatchThat
我尝试了(?但似乎不容易:)
作为自由间距正则表达式:
^ # Start of string
(?!This) # Assert that "This" can't be matched here
.* # Match the rest of the string
That # making sure we match "That"
$ # right at the end of the string
这将匹配满足条件的单个单词,但前提是该单词是正则表达式的唯一输入。如果您需要在许多其他单词的字符串中查找单词,请使用
\b(?!This)\w*That\b
\b
是单词边界锚点,因此它在单词的开头和结尾匹配\w
表示“字母数字字符”。如果您还希望允许非字母数字作为“单词”的一部分,请改用\S
——这将匹配任何非空格的字符
在Python中,您可以执行words=re.findall(r“\b(?!This)\w*That\b”,text)
你用的是哪种语言?你的意思是像字母序列一样的单词吗?@mcandre我用的是python,但这并不是一个复杂的单词,有很多不同,我猜@Gumbo它实际上是一个可以与之相匹配的单词\w+我感谢你诚实的批评,没有愚蠢的评论。我现在当然要退出了。@chaosption,我建议你是y你取消删除你的答案并修改正则表达式以使用lookahead和lookahead-我觉得它相当优雅,并会立即对它进行升级。它甚至可能比我的更快,因为正则表达式引擎不需要做任何回溯。我能想到的唯一缺点是它在JavaScript或Ruby 1.8中无法工作,因为它们不支持回头看。谢谢你的回答,但我认为这里漏掉的一点是-单词-不是字母序列这里是测试,正则表达式适用于单个单词时效果很好。在你的测试中,单词被分散在两行之间,中间有更多的其他单词。你可以把它放在规范中。@Tim Pietzcker这是正确的,所以这是一个很好的测试int为我学习如果单词是单独的或在其他方面有很大的不同,再次感谢。。。