我之前从未使用过正则表达式,而且我正在努力理解它们。我有'define(__arch64__)'
形式的字符串,我只想要__arch64__
。
import re
mystring = 'define(this_symbol)||define(that_symbol)'
pattern = 'define\(([a-zA-Z_]\w*)\)'
re.search(mystring, pattern).groups()
(无,无)
search
返回'this_symbol'
和'that_symbol'
的内容是什么?
答案 0 :(得分:2)
您的参数search()
的顺序错误,应为:
re.search(pattern, mystring)
此外,反斜杠是python字符串中的转义字符(例如“\ n”将是包含换行符的字符串)。如果你想要文字后退,就像在正则表达式中一样,你必须用另一个反斜杠来转义它们。或者,您可以使用前面标有r
的{{3}},不要将反斜杠视为转义字符:
pattern = r'define\(([a-zA-Z_]\w*)\)'
答案 1 :(得分:0)
您必须区分符号(
和正则表达式组字符。此外,该模式在re.search
中首先出现:
pattern = 'define\\(([a-zA-Z_]\w*)\\)'
re.search(pattern, mystring).groups()