就是一段类似这样的字符。
2NB 厉害 文本 3SD 速度 文本 4UPDATE_TIME 更新时间 文本
前面第一到两位是数字,有些是 11 、 12 之类的
中间是英文,有时携带符号
后面是中文,但并不需要“文本”这个字符串
需要的结果是中间的英文和后面的中文。
为“ NB ”,“厉害”,“ SD ”,“速度”,“ UPDATE_TIME ”,“更新时间”这样一个匹配的字符串
在使用 Python3 的正则表达式的时候,能不能选择类似
[1-9]\d??[A-Z]+?[\u4e00-\u9fa5]+
(这个没有匹配“ UPDATE_TIME ”)
这一堆中只要
“[A-Z]+?”
和
“[\u4e00-\u9fa5]+”
所匹配出来的字符串
1
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 |
2
sola97 2017-03-08 08:15:54 +08:00 via Android
用括号框起来
|
3
bazingaterry 2017-03-08 08:36:01 +08:00 via iPhone
分组
|
4
imn1 2017-03-08 09:13:20 +08:00
[^A-Za-z]+[A-Za-z]+\s+\S+\s+\S+
这个就能找出某个组了,根据你自己的需要加圆括号 |
5
yuedingwangji 2017-03-09 02:38:07 +08:00
说个简单的,不知道可不可行, 先把文本替换成空,然后把数字替换成空,最后打印出来,不知道能否满足 LZ 要求
|