使用正则表达式匹配'Reference:G。'中的G
我尝试使用此功能但仍然出现错误
refresidue = re.compiler(r'(s/Reference: \ //n)')
任何其他建议,因为我在这方面很新。非常感谢任何帮助。
'参考:G。'参考可以是A,C,G或T
我很抱歉这个混乱 - 我想要的是输出只打印出字符(A,C,G,T)而不是参考:。
这是我的代码
refresidue = re.compiler(r'(s / Reference:\ // n)')
a_matchref = refresidue.search(row [2])
如果a_matchref不是None:
a_matchref = a_matchref.group(1)
答案 0 :(得分:1)
你正在混合JavaScript(或其他一些正则表达式)和Python的正则表达式语法;正则表达式本身也很奇怪。此外,re.compile()
编译正则表达式,它与任何内容都不匹配。
假设您想在文本Reference:
之后匹配单个字母数字字符,请尝试以下操作:
refresidue = re.search(r"Reference:\s*(\w)", your_text_to_be_matched).group(1)
答案 1 :(得分:1)
以下是我如何逐步解决问题的方法。即使经过几年的regexp经验,一些特殊的语法总是让我无法理解。在这种情况下,最好从一个完全符合你想要的短表达开始。
让我们使用re
模块。
>>> import re
现在错误是什么?
>>> refresidue = re.compiler(r'(s/Reference: \ //n)')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'compiler'
啊,那么re
模块有哪些属性?
>>> dir(re)
['DEBUG', 'DOTALL', 'I', 'IGNORECASE', 'L', 'LOCALE', 'M', 'MULTILINE', 'S',
'Scanner', 'T', 'TEMPLATE', 'U', 'UNICODE', 'VERBOSE', 'X', '_MAXCACHE', '__all__',
'__builtins__', '__doc__', '__file__', '__name__', '__version__', '_alphanum',
'_cache', '_cache_repl', '_compile', '_compile_repl', '_expand', '_pattern_type',
'_pickle', '_subx', 'compile', 'copy_reg', 'error', 'escape', 'findall', 'finditer',
'match', 'purge', 'search', 'split', 'sre_compile', 'sre_parse', 'sub', 'subn', 'sys',
'template']
所以它必须是re.compile
>>> refresidue = re.compile(r'(s/Reference: \ //n)')(re)
好的,编译完成。我们用它来匹配字符串。
>>> refresidue.match('Reference: G')
没有什么?然后删除表达式。
>>> refresidue = re.compile(r'Reference:')
>>> refresidue.match('Reference: G')
<_sre.SRE_Match object at 0x7fe14701f030>
当然应该匹配。如何添加G?
>>> refresidue = re.compile(r'Reference: G')
>>> refresidue.match('Reference: G')
<_sre.SRE_Match object at 0x7fe14701f098>
是。我想要整个字母表。
>>> refresidue = re.compile(r'Reference: [A-Z]')
>>> refresidue.match('Reference: G')
<_sre.SRE_Match object at 0x7fe14701f030>
我也想单独写出这封信。
>>> refresidue = re.compile(r'Reference: ([A-Z])')
>>> refresidue.match('Reference: G')
<_sre.SRE_Match object at 0x7fe1470b9738>
到目前为止没问题。那么我如何得到带括号的部分呢?
>>> dir(refresidue.match('Reference: G'))
['__copy__', '__deepcopy__', 'end', 'expand', 'group', 'groupdict', 'groups', 'span', 'start']
group
听起来像。
>>> refresidue.match('Reference: G').group
<built-in method group of _sre.SRE_Match object at 0x7fe1470b9738>
所以这是一种方法。我们试试吧。
>>> refresidue.match('Reference: G').group(0)
'Reference: G'
这个怎么样?
>>> refresidue.match('Reference: G').group(1)
'G'
那里,G。
答案 2 :(得分:0)
我认为这就是你所追求的,但也许你可以添加更多关于你匹配的数据类型的例子 -
import re
refresidue = re.compile(r'Reference: ([A-Z])')
你使用上面这样的:
>>>> refresidue.match("Reference: G").group(1)
'G'