首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex查找文本中的文字字符串

使用regex查找文本中的文字字符串
EN

Stack Overflow用户
提问于 2020-12-14 18:36:52
回答 2查看 616关注 0票数 0
代码语言:javascript
复制
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。

有人能帮我做一个只提取文本中文字字符串的正则表达式吗?

代码语言:javascript
复制
lst_str = ['b', 'a','c', 'year', 'month'. 'date', 'sec', 'd_1','d_2', 'err']
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-14 19:22:49

使用了上面提供的字符串。

代码语言:javascript
复制
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:

代码语言:javascript
复制
pattern = re.compile(r"\s+([A-Za-z]+[_\d]*)")
match = pattern.findall(code1)

打印输出(匹配):

代码语言:javascript
复制
['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

票数 1
EN

Stack Overflow用户

发布于 2020-12-14 18:39:58

您可以使用如下正则表达式:

代码语言:javascript
复制
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)

你得到:

代码语言:javascript
复制
['b', 'a', 'b', 'c', 'year', 'month', 'date', 'sec', 'd_1', 'year', 'month', 'd_2', 'date', 'sec', 'err']

如果要避免多次出现,可以使用一组:

代码语言:javascript
复制
list(set(match))

你得到的是:

代码语言:javascript
复制
['sec', 'month', 'a', 'd_1', 'b', 'c', 'year', 'date', 'err', 'd_2']

我不知道我是否理解你的要求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65294619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档