正则表达式怎么提取表达式中需要的东西

2017-03-08 01:40:11 +08:00
 HFX3389

就是一段类似这样的字符。

2NB 厉害 文本 3SD 速度 文本 4UPDATE_TIME 更新时间 文本

前面第一到两位是数字,有些是 11 、 12 之类的

中间是英文,有时携带符号

后面是中文,但并不需要“文本”这个字符串

需要的结果是中间的英文和后面的中文。

为“ NB ”,“厉害”,“ SD ”,“速度”,“ UPDATE_TIME ”,“更新时间”这样一个匹配的字符串

在使用 Python3 的正则表达式的时候,能不能选择类似

[1-9]\d??[A-Z]+?[\u4e00-\u9fa5]+

(这个没有匹配“ UPDATE_TIME ”)

这一堆中只要

“[A-Z]+?”

“[\u4e00-\u9fa5]+”

所匹配出来的字符串

1211 次点击
所在节点    问与答
5 条回复
DiamondbacK
2017-03-08 07:16:47 +08:00
不会 Python ,刚刚 google 查文档凑出来的:

```python
in: origStr = "2NB 厉害 文本 3SD 速度 文本 4UPDATE_TIME 更新时间 文本"

In: list(filter(lambda x: x != '文本', re.findall('[^ \d]+', origStr)))
out: ['NB', '厉害', 'SD', '速度', 'UPDATE_TIME', '更新时间']
```

ref:
https://docs.python.org/2/library/re.html
http://book.pythontips.com/en/latest/map_filter.html
sola97
2017-03-08 08:15:54 +08:00
用括号框起来
bazingaterry
2017-03-08 08:36:01 +08:00
分组
imn1
2017-03-08 09:13:20 +08:00
[^A-Za-z]+[A-Za-z]+\s+\S+\s+\S+
这个就能找出某个组了,根据你自己的需要加圆括号
yuedingwangji
2017-03-09 02:38:07 +08:00
说个简单的,不知道可不可行, 先把文本替换成空,然后把数字替换成空,最后打印出来,不知道能否满足 LZ 要求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/345752

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX