如何查找以特定字符开头的单词
我想对由python在句子中以's'开头的单词进行排序。
这里是我的代码:如何查找以特定字符开头的单词
import re
text = "I was searching my source to make a big desk yesterday."
m = re.findall(r'[s]\w+', text)
print m
但是代码的结果是:
['searching', 'source', 'sk', 'sterday'].
我怎样写一个有关正则表达式的代码?或者,有没有什么方法来整理单词?
>>> import re
>>> text = "I was searching my source to make a big desk yesterday."
>>> re.findall(r'\bs\w+', text)
['searching', 'source']
为小写和大写s
使用:r'\b[sS]\w+'
如果你想匹配单个字符,你不需要把它放在一个字符类,所以
s
比同[s]
。你想要找的是一个word boundary。单词边界
\b
是与从非单词字符(\W
)到单词字符(\w
)(反之亦然)的更改相匹配的锚点。
解决的办法是:
\bs\w+
这个表达式将匹配上一个s
与不发一语字符之前(的作品也对字符串的开始)之后,至少还需要一个字字符。 \w+
匹配它可以找到的所有单词字符,因此最后不需要\b
。
谢谢你的详细答案。并加入网站将有好的信息 – PrimingRyan 2013-05-08 12:51:29
我知道这是不是正则表达式的解决方案,但你可以使用startswith
>>> text="I was searching my source to make a big desk yesterday."
>>> [ t for t in text.split() if t.startswith('s') ]
['searching', 'source']
>>>
这是有用的方式!谢谢! – PrimingRyan 2013-05-08 14:35:48
@PrimingRyan不客气 – 2013-05-08 14:39:48
我想在这里补充一个小东西,
比方说,你有一个找到以's'开头的单词
line =“someone should show something to [email protected]”
如果写正则表达式等, 剑= re.findall(R “\ B [SS] \ W +”,线)
输出将是, [ '某人', '应该',”秀”, '东西', '有些']
但是,如果你修改正则表达式,
使用\ S代替\ W
剑= re.findall(R“\ b [SS ] \ S +“,行)
输出将是, ['someone','should','show','something','[email protected]']
结尾''\ b''不需要贪婪匹配程序它。另外,我猜测OP也希望匹配大写字母S。 – 2013-05-08 12:19:36
@StevenRumbalski好点,我想OP可能已经想要大写'S',但不确定,因为OP使用'[s]',但是我也将其添加进去 – jamylak 2013-05-08 12:20:50
谢谢大家的帮助! – PrimingRyan 2013-05-08 12:49:50