【问题标题】:Python regex search only finding the first patternPython 正则表达式搜索仅找到第一个模式
【发布时间】:2013-05-18 01:55:24
【问题描述】:

我正在使用 python 的 re 模块在字符串中搜索某些单词。

举个简单的例子,我有一个名为 valid_words 的列表和一个名为 valid_string 的字符串。

valid_string = "Use Use%"
valid_words = ['Use', 'Use%']

for header in valid_words:
  regex_search = re.search("\\b"+header+"\\b",  valid_string)
  if regex_search:
    print header

但是,这只会返回 Use 而不是 Use%。我认为这是因为 'Use%' 中的 % 被视为正则表达式。我对么?有没有办法解决这个问题?

【问题讨论】:

    标签: python regex string search


    【解决方案1】:

    这里的问题是您使用了单词边界,但是,对于您的第二个单词'Use%',单词边界实际上出现在e% 之间。例如:

    >>> re.search('.\\b','Use%').group(0)
    'e'
    

    【讨论】:

    • 哦,我明白了。那么有没有办法将边界移动到valid_words中每个单词的末尾?
    • @Fsun -- 很难说在这里做什么最好。看起来像一个简单的str.split 会是你想要的,但很难说......
    • 谢谢。但是, str.split 在我的情况下实际上是不可行的。例如,valid_words 中的元素可能是“He llo”,因此正则表达式搜索将在 valid_string 中查找“He llo”。
    猜你喜欢
    • 2018-06-09
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    相关资源
    最近更新 更多