如何使用正则表达式搜索带括号的字符串?
How to search a string with parentheses using regular expression?
我有一个包含以下字符串的 txt 文件:
A 123
B 456
Ab(123)
......
我想在 txt 文件中搜索 Ab(123)
。
我尝试过的:
re.search(r'Ab(123)',string)
有12个特殊含义的字符,你在前面加\
转义到它的字面意思。
re.search(r'Ab\(123\)',string)
# or re.findall(r'Ab\(123\)',string)
查看 https://regex101.com/r/1bb8oz/1 了解详细信息。
Ab\(123\)
在正则表达式中,有 12 个具有特殊含义的字符:反斜杠 \
、插入符 ^
、美元符号 $
、句点或点 .
、竖线或管道符号 |
、问号 ?
、星号或星号 *
、加号 +
、左括号 (
、右括号 )
、左方括号 [
和左大括号 {
,这些特殊字符通常称为 metacharacters
,应该用反斜杠转义 Ab\(123\)
如果用作文字。
这可以自动使用re.escape()
实现
import re
string = "some text Ab(123) and more text"
if re.search(re.escape("Ab(123)"),string):
print("match")
如果您的目标只是提取带有括号的行,您首先真的需要正则表达式吗?
您可以使用以下方法:
输入:
$ cat parentheses.txt
A 123
B 456
Ab(123)
uV(a5afgsg3)
A 123
输出:
$ python parentheses.py
['Ab(123)', 'uV(a5afgsg3)']
代码:
with open('parentheses.txt') as f:
content = f.readlines()
content = [x.strip() for x in content if '(' in x and ')' in x]
print(content)
如果你真的想使用正则表达式:
import re
s = """
A 123
B 456
Ab(123)
uV(a5afgsg3)
A 123
"""
print(re.findall(r'^.*?\(.*?\).*$',s,re.MULTILINE))
输出:
['Ab(123)', 'uV(a5afgsg3)']
我有一个包含以下字符串的 txt 文件:
A 123
B 456
Ab(123)
......
我想在 txt 文件中搜索 Ab(123)
。
我尝试过的:
re.search(r'Ab(123)',string)
有12个特殊含义的字符,你在前面加\
转义到它的字面意思。
re.search(r'Ab\(123\)',string)
# or re.findall(r'Ab\(123\)',string)
查看 https://regex101.com/r/1bb8oz/1 了解详细信息。
Ab\(123\)
在正则表达式中,有 12 个具有特殊含义的字符:反斜杠 \
、插入符 ^
、美元符号 $
、句点或点 .
、竖线或管道符号 |
、问号 ?
、星号或星号 *
、加号 +
、左括号 (
、右括号 )
、左方括号 [
和左大括号 {
,这些特殊字符通常称为 metacharacters
,应该用反斜杠转义 Ab\(123\)
如果用作文字。
这可以自动使用re.escape()
import re
string = "some text Ab(123) and more text"
if re.search(re.escape("Ab(123)"),string):
print("match")
如果您的目标只是提取带有括号的行,您首先真的需要正则表达式吗?
您可以使用以下方法:
输入:
$ cat parentheses.txt
A 123
B 456
Ab(123)
uV(a5afgsg3)
A 123
输出:
$ python parentheses.py
['Ab(123)', 'uV(a5afgsg3)']
代码:
with open('parentheses.txt') as f:
content = f.readlines()
content = [x.strip() for x in content if '(' in x and ')' in x]
print(content)
如果你真的想使用正则表达式:
import re
s = """
A 123
B 456
Ab(123)
uV(a5afgsg3)
A 123
"""
print(re.findall(r'^.*?\(.*?\).*$',s,re.MULTILINE))
输出:
['Ab(123)', 'uV(a5afgsg3)']