I have a txt file containing strings as:
A 123
B 456
Ab(123)
......
I wish to search Ab(123) in txt file.
What I have tried :
re.search(r'Ab(123)',string)
I have a txt file containing strings as:
A 123
B 456
Ab(123)
......
I wish to search Ab(123) in txt file.
What I have tried :
re.search(r'Ab(123)',string)
There are 12 characters with special meanings, you escape to its literal meaning with \ in front of it.
re.search(r'Ab\(123\)',string)
# or re.findall(r'Ab\(123\)',string)
Look up https://regex101.com/r/1bb8oz/1 for detail.
Ab\(123\)In regex, there are 12 characters with special meanings: the backslash \, the caret ^, the dollar sign $, the period or dot ., the vertical bar or pipe symbol |, the question mark ?, the asterisk or star *, the plus sign +, the opening parenthesis (, the closing parenthesis ), the opening square bracket [, and the opening curly brace {, these special characters are often called metacharacters and should be escaped with backslash Ab\(123\) if used as literal.
This can be automagically achieved using re.escape()
import re
string = "some text Ab(123) and more text"
if re.search(re.escape("Ab(123)"),string):
print("match")
Do you really need regex in the first place, if your goal is just to extract the lines where you have parentheses.
You could use the following approach:
input:
$ cat parentheses.txt
A 123
B 456
Ab(123)
uV(a5afgsg3)
A 123
output:
$ python parentheses.py
['Ab(123)', 'uV(a5afgsg3)']
code:
with open('parentheses.txt') as f:
content = f.readlines()
content = [x.strip() for x in content if '(' in x and ')' in x]
print(content)
If you really want to use regex:
import re
s = """
A 123
B 456
Ab(123)
uV(a5afgsg3)
A 123
"""
print(re.findall(r'^.*?\(.*?\).*$',s,re.MULTILINE))
output:
['Ab(123)', 'uV(a5afgsg3)']