使用正则表达式在python中的分隔符之间提取文本

new9mtju  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(295)

关闭。这个问题需要详细或明确。它目前不接受答案。
**想改进这个问题吗?**编辑这篇文章,添加细节并澄清问题。

12小时前关门。
改进这个问题
我有一条短信 KYRDESTON, 2109. fo. 900. MOLTON, or, Moulton, Lord Egremont, 2109. ff. 我想从中提取 KYRDESTONMOLTON, or, Moulton, Lord Egremont . 这在python中是如何实现的。也许使用正则表达式会有所帮助。我有一个大文件,其中包含许多类似的字符串,因此需要一个正则表达式。
提前谢谢。我面临的问题是,我的一些文本中有多个逗号,如莫尔顿,或莫尔顿,埃格蒙特勋爵。有人能帮忙吗?

aor9mmx1

aor9mmx11#

您可以使用以下正则表达式来匹配所需的部分。

([A-Za-z](\D|\s|,)+),

正则表达式演示
您需要将该行作为一个整体进行处理,并像这样迭代所有匹配器

line = "KYRDESTON, 2109. fo. 900. MOLTON, or, Moulton, Lord Egremont, 2109. ff."
for match in re.finditer(r'([A-Za-z](\D|\s|,)+),', line):
  out = match.group(1) #  Extract group 1 to omit trailing comma
  print(out)

请注意,正则表达式不作为一个整体捕获2个匹配的部分。
编辑
要捕获具有2个不同数学组的单个正则表达式中的第一部分和第二部分,请使用以下正则表达式

([A-Za-z](\D|\s|,)+),(\s|\w|\d|\.)+\.\s([A-Za-z](\D|\s|,)+),

正则表达式演示用法

line = "KYRDESTON, 2109. fo. 900. MOLTON, or, Moulton, Lord Egremont, 2109. ff."
for match in re.finditer(r'([A-Za-z](\D|\s|,)+),(\s|\w|\d|\.)+\.\s([A-Za-z](\D|\s|,)+),', line):
  part1 = match.group(1)
  part2 = match.group(4)
  print(part1 + " " + part2)

相关问题