gpt4 book ai didi

python - 使用Python正则表达式从点直到冒号提取子字符串

转载 作者:行者123 更新时间:2023-12-05 00:50:57 25 4
gpt4 key购买 nike

我有一个类似于以下字符串的字符串:

'My substring1. My substring2: My substring3: My substring4'

理想情况下,我的目标是使用 Python 正则表达式从该字符串中提取“My substring2”。但是,我也会对类似于 '.我的子字符串2:'

到目前为止,我可以提取

'. My substring2: My substring3:'

"\.\s.*:"

另外,我已经能够提取 - 通过使用 Wiktor Stribiżew 的解决方案来处理 How can i extract words from a string before colon and excluding \n from them in python using regex 中发布的有点类似的问题-

'My substring1. My substring2'

特别是

r'^[^:-][^:]*'

但是,经过数小时的搜索和尝试(我对正则表达式很陌生),我无法将这两个结果组合成一个有效的正则表达式,该表达式将从上述字符串中提取“My substring2”。

如果有人能帮助我找到正确的正则表达式来提取“我的子字符串 2”,我会非常高兴。谢谢!

最佳答案

例如,您也可以排除匹配点,并使用匹配除 之外的任何字符的捕获组:

^[^:-][^:.]*\.\s*([^:]+)

说明

  • ^ 字符串开始
  • [^:-] 第一个字符不能是 :-
  • [^:.]* 可选匹配除 : 之外的任何字符。
  • \.\s* 匹配点和可选的空白字符
  • ([^:]+) 捕获组1,匹配以外的1+个字符:

Regex demo

如果在匹配点之前不能有 : .- 或者有点短:

^[^:.-]+\.\s*([^:]+)

Regex demo | Python demo

例如

import re

s = "My substring1. My substring2: My substring3: My substring4"
pattern = r"[^:-][^:.]*\.\s*([^:]+)"
m = re.match(pattern, s)
if m:
print(m.group(1))

输出

My substring2

关于python - 使用Python正则表达式从点直到冒号提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73366049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com