我的正则表达式只有在不包含“或”选项时才匹配;但是我需要包含它,因为我需要匹配不同的字符串。在
entries[0] = 'ephname = /share/old/eph/2004A.1770.comb'
print re.search(r'\s?ephname\s?=\s?.*?\.s(\d+).*?\s?|\s?ephname\s?=\s?.*?(\d+)
\.comb\s?', entries[0]).group(1)
>>> None
但如果我能做到:
^{pr2}$我不明白为什么第一次尝试没有匹配任何东西。有人知道为什么吗?在
在第一个regex中,组1位于
|
之前,因此它位于包含\.s
的分支中。字符串的任何部分都不能与之匹配(没有文本.
后跟文本s
),因此整个分支都失败了。另一个分支成功了,但是它有一个不同的组号,可以让您知道哪个替代方案有效。在它是匹配的;它返回了一个match对象,而不是
None
;您可以对该匹配对象调用.group(1)
。在然而,这里的问题是现在有2捕获组。第一个在第一个分支,第二个分支在第二个分支中。在
可以将匹配项存储到变量中,然后使用^{} property 获取最后匹配的捕获组的索引:
相关问题 更多 >
编程相关推荐