【问题标题】:Regular Expression Testing正则表达式测试
【发布时间】:2016-04-01 01:39:16
【问题描述】:

所以我一直在为自己研究这个项目来理解正则表达式有6行输入。第一行将包含 10 个字符串。最后 5 行将包含一个有效的正则表达式字符串。 对于输出,每个正则表达式根据第 1 行打印与字符串匹配的所有字符串;如果没有匹配,则打印无。 # 用来表示它是一个空字符串。除了空字符串部分,我已经得到了一切,所以这是我的代码 和示例输入将是

1)#,aac,acc,abc,ac,abbc,abbbc,abbbbc,aabc,accb

我希望第二个输入是

2)b* 

我试图得到的输出是#

到目前为止它什么也没输出

import re

inp = input("Search String:").upper().split(',')

for runs in range(50):
    temp = []
    query = input("Search Query:").replace("?", "[A-Z_0-9]+?+$").upper()
    for item in inp:
        search = re.match(query, item)
        if search:
            if search.group() not in temp:
                temp.append(search.group())
    if len(temp) > 0:
        print(" ".join(temp))
    else:
        print("NONE")

【问题讨论】:

  • x = print("... 可能是个问题。
  • 我喜欢在测试正则表达式时使用regex101.com/#python。它可以让你分解你的表达,这很有帮助。
  • 哦,我正在测试一些东西,让我删除它
  • 你确定它“什么都不输出”吗?当我运行您的确切程序时,它会输出“NONE”。
  • 是的,但它不应该输出无

标签: python regex


【解决方案1】:

b 只匹配文字字符 'b',因此您的搜索字符串将只匹配零个或多个 b 的序列,例如

b

bbbb

bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb (and so on)

您的匹配字符串不会匹配其他任何内容。

我不知道您为什么使用特定字母,但我假设您打算使用转义序列,例如“\b*”,尽管它只匹配字符类型之间的转换,因此它不会匹配 # in这个上下文。如果你使用\W*,它会匹配#(不确定它是否会匹配你想要的其他东西)。

如果您还没有,请查看以下有关正则表达式的资源,包括所有转义字符和元字符:

Wikipedia

Python.org 2.7

【讨论】:

  • 我不相信程序可以正常工作,你能看看它是否正常
  • 是的,所以它应该打印不匹配,它不会
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 2015-08-30
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多