import re
code1 = '''
b = -9
a = b + c
year = 2000
month = 0xA
date = 0b1101
sec = 1.8E3
d_1 = year + month
d_2 = date * sec
err = 0o0.1
'''我得到了这段文字,我必须从这里提取所有的文字字符串。我正在使用拆分方法,并取得了很大的进步,但我不知道如何表示文字字符串。我发现我可以用regex。
有人能帮我做一个只提取文本中文字字符串的正则表达式吗?
lst_str = ['b', 'a','c', 'year', 'month'. 'date', 'sec', 'd_1','d_2', 'err']发布于 2020-12-14 19:22:49
使用了上面提供的字符串。
code1 = '''
b = -9
a = b + c
year = 2000
month = 0xA
date = 0b1101
sec = 1.8E3
d_1 = year + month
d_2 = date * sec
err = 0o0.1
'''和regex:
pattern = re.compile(r"\s+([A-Za-z]+[_\d]*)")
match = pattern.findall(code1)打印输出(匹配):
['b', 'a', 'b', 'c', 'year', 'month', 'date', 'sec', 'd_1', 'year', 'month', 'd_2', 'date', 'sec', 'err']破坏了雄鹰:
\s+ -匹配一个或多个Unicode空白字符(包括\t\n\r\f\v )() -包含匹配字符串中我们需要进一步显示或使用的部分。[A-Za-z]+ -将大写字母和/或小写字母序列与序列长度至少1 (1或更多)相匹配。[_\d]* -匹配序列的下划线和/或数字(0-9)与序列长度为0或更多,即,下划线或数字可能是尾随字母,也可能不是。您可以参考python中regex的官方文档,以了解更多关于特殊序列的使用的- Python Regex Doc。
发布于 2020-12-14 18:39:58
您可以使用如下正则表达式:
import re
code1 = '''
b = -9
a = b + c
year = 2000
month = 0xA
date = 0b1101
sec = 1.8E3
d_1 = year + month
d_2 = date * sec
err = 0o0.1
'''
pattern = re.compile(r"\b([a-z]+[a-z0-9_]*)\b")
match = pattern.findall(code1)你得到:
['b', 'a', 'b', 'c', 'year', 'month', 'date', 'sec', 'd_1', 'year', 'month', 'd_2', 'date', 'sec', 'err']如果要避免多次出现,可以使用一组:
list(set(match))你得到的是:
['sec', 'month', 'a', 'd_1', 'b', 'c', 'year', 'date', 'err', 'd_2']我不知道我是否理解你的要求。
https://stackoverflow.com/questions/65294619
复制相似问题