用于以下表达式的Python regex

2024-10-01 15:36:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有绳子

s = 'const char * const xyz = \"abc\"'

我想在上面运行正则表达式。你知道吗

我在用

match = re.search(r'const char * const (\w+) = (\w+)', s)

到catpure xyzabc字符串的一部分,但是我得到了一个None对象

我做错什么了


Tags: 对象字符串renonesearchmatchabcchar
2条回答

您需要指定双引号:

>>> re.findall(r'(\w+)\s=\s"(\w+)"',s)
[('xyz', 'abc')]

或使用re.search

>>> p=re.search(r'(\w+)\s=\s"(\w+)"',s)
>>> p.group(1)
'xyz'
>>> p.group(2)
'abc'

您与字符串文本中的双引号不匹配。下面的代码修复了这个问题。你知道吗

import re
s = 'const char * const xyz = \"abc\"'
match = re.search(r'const char \* const (\w+) = \"(\w*)\"', s)

但是,您只需要将字符串文本include[0-9a-zA-Z_]\w匹配。以下内容更具包容性。它匹配任何不是双引号的内容,直到下一个双引号:

match = re.search(r'const char \* const (\w+) = \"([^\"]*)\"', s)

但它不会匹配嵌入双引号的字符串,如'The \"Black Crowes\" played in L.A. last weekend.'要执行类似操作,请尝试:

match = re.search(r'const char \* const (\w+) = \"((\\?.)*?)\"', s)

>>> match.group(1)
'xyz'
>>> match.group(3)
'abc'

"开始:这与字符串文本的开始双引号匹配。((\\?.)*?):延迟匹配斜杠加上另一个字符(或只是另一个字符)0次或更多次,直到我们遇到"。你知道吗

相关问题 更多 >

    热门问题