The specific string I want to get is begin with '$' and end with more than one '=' , such as '$AA78B=' or '$\\BA\\\\=='.
So the regular express should be '\$.*?\=+'. Why '\$'? because '$' is regular express character, if we want to match '$', we need use '\$' as regular express. The same to '\='
And the original string should be ingore '\'. so repr() is needed.
Here is the code.
#!/usr/bin/env python
#
import re
def get_specific_string(string,start,end):
target_string = start+'.*?'+end+'+'
print(target_string)
find_strs = re.findall(target_string,string)
return find_strs
if __name__ == "__main__":
string = "abc$234A\\B==45$IBAI="
print(repr(string))
my_strs = get_specific_string(repr(string),'\$','\=')
for str_item in my_strs:
print(str_item)
If the specific string use '\n' as end, what regular express we should use? r'\$.*?\\n'.
#!/usr/bin/env python
#
import re
def get_specific_string(string,start,end):
target_string = start+'.*?'+end #r'\$.*?\\n'
print(target_string)
find_strs = re.findall((target_string),string)
return find_strs
def parse_string(string):
src_string = repr(string)
print("string:" + string)
print("repr string is:"+src_string)
cmd_strs = get_specific_string(src_string,r'\$',r'\\n')
for cmd_str in cmd_strs:
print("cmd:"+ cmd_str)
src_string = src_string.replace(cmd_str,'')
print("remove cmd:" + src_string)
return src_string,cmd_strs
if __name__ == "__main__":
string = "abc$234A\\B==\n45$IBAI\\\\=\\n"
logstr,cmds=parse_string(string)
print("log:" + logstr)
for cmd in cmds:
print("return cmd:" + cmd)
for c in cmd:
print("cmd char:" + c)
regular express '\\\\' means '\' in string.
regular express r'\\' means '\' in sting.
so regular express r'\\n' means '\n' in string.