python - 使用正则表达式通过带前缀的逗号分隔字符串
问题描述
这是一个非常基本的问题,但出于某种原因,我正在努力构建正则表达式。我有一堆以X
(末尾的空格)开头的字符串,然后是一个字符串列表(可能有多个单词),它们用逗号分隔并在末尾有一个点。
例子:
X abc, abd.
X abc, abd, abcd.
X abc abd, abc.
X asdas, asdasd, adsasda, asdasda.
X asdas asdasda, asdasdas asdasda, asdasdasas, asdasddas.
我正在尝试使用该re
模块来获取逗号之间所有字符串的列表,所以我得到:
['abc', 'abd']
['abc', 'abd', 'abcd']
['abc abd', 'abc']
['asdas', 'asdasd', 'adsasda', 'asdasda']
['asdas asdasda', 'asdasdas asdasda', 'asdasdasas', 'asdasddas']
我试过了:
match = re.search('X\s+((.*)\,)+(.*)\.', content.text)
但它看起来不起作用:
我可以在这里使用哪个正则表达式?
请注意,字符串可能包含数字和特殊字符(like:;()
和其他字符)。
解决方案
这是一种仅使用正则表达式即可实现您想要的方法:
import re
lst = ['X abc, abd.',
'X abc, abd, abcd.',
'X abc abd, abc.',
'X asdas, asdasd, adsasda, asdasda.',
'X asdas asdasda, asdasdas asdasda, asdasdasas, asdasddas.']
[re.split(", ", re.search("X\s(.*)\.", i).group(1)) for i in lst]
此方法使用部分正则表达式:
import re
lst = ['X abc, abd.',
'X abc, abd, abcd.',
'X abc abd, abc.',
'X asdas, asdasd, adsasda, asdasda.',
'X asdas asdasda, asdasdas asdasda, asdasdasas, asdasddas.']
[[j.strip() for j in re.split(",", i.strip("X."))] for i in lst]
推荐阅读
- plot - Seaborn regplot y_test 和预测的样本量
- c# - 使用 Bot Framework v4,我如何确定 OAuthPrompt 是刚刚登录还是令牌已经存在?
- javascript - addEventListener 不进入 else
- realm - 升级到最新的领域版本 5.0 后在 swift 中写入双精度时领域崩溃
- python - 如何使循环从索引 150 开始并从列表中打印 20 个值?
- javascript - 如何将一组数字分类到均匀分布的桶中?
- ios - 裁剪 CIImage 会导致图像过宽 1px
- java - 从 1 个数组列表中删除对象并添加到另一个
- javascript - 使用任意字符串查询表
- asp.net-mvc - 了解加载 ChildAction 的过程