我正在尝试创建一个匹配字符,空格而不是数字的正则表达式。
因此hello 123
不匹配,但hell o
将会匹配。
我试过了:
[^\d\w]
但是,我找不到在这里添加空格的方法。我必须使用\w
,因为我的字符串可以包含Unicode字符。
答案 0 :(得分:1)
目前还不清楚字符究竟是指什么,但是,假设你的意思是字母字符(基于你的输入),这个正则表达式应该适合你。
^(?:(?!\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']