匹配特征和空格,但不匹配数字

时间:2017-11-15 15:47:33

标签: python regex

我正在尝试创建一个匹配字符,空格而不是数字的正则表达式。

因此hello 123不匹配,但hell o将会匹配。

我试过了:

[^\d\w]

但是,我找不到在这里添加空格的方法。我必须使用\w,因为我的字符串可以包含Unicode字符。

2 个答案:

答案 0 :(得分:1)

目前还不清楚字符究竟是指什么,但是,假设你的意思是字母字符(基于你的输入),这个正则表达式应该适合你。

代码

See regex in use here

^(?:(?!\d)[\w ])+$

注意:此正则表达式使用多行和Unicode的mu标志(仅当输入由换行符分隔时才需要多行)

结果

输入

ÀÇÆ some words
ÀÇÆ some words 123

输出

这只显示匹配

ÀÇÆ some words

说明

  • ^在行首处断言位置
  • (?:(?!\d)[\w ])+匹配以下一次或多次(tempered greedy token
    • (?!\d)否定前瞻确保后续内容与数字不匹配。如果您想确保(?![\d_])也未使用,可以将其更改为_
    • [\w ]匹配任何单词字符或空格(将Unicode字符与u标志匹配)`
  • $断言行尾的位置

答案 1 :(得分:0)

您可以使用前瞻:

(?=^\D+$)[\w\s]+

<小时/> 在Python

import re

strings = ['hello 123', 'hell o']

rx = re.compile(r'(?=^\D+$)[\w\s]+')

new_strings = [string for string in strings if rx.match(string)]
print(new_strings)
# ['hell o']