gpt4 book ai didi

python - 如何避免匹配较长的字符串而选择较短的子字符串?

转载 作者:行者123 更新时间:2023-12-01 07:22:21 28 4
gpt4 key购买 nike

我有以下正则表达式,旨在根据社交媒体数据提取参加事件的人数:

我是正则表达式新手,但我尝试使用 {} 来限制匹配字符的数量。

([0-9]+)?(,)?[0-9]+(\s*(\.|,)\s*[0-9])?\s*(k|K)?\s*(P|p).*e\s*(G|g).*g

问题是它不仅匹配“60 人去”,还匹配“184 人感兴趣 20 人去”。

在第一种情况下,它给了我所需的值(即 60),但在第二种情况下,我得到的是 184 而不是 20。

<小时/>

示例 1:

“美国穆斯林联合会分享了他们的事件。\n赞助 B\n如果您也认为应该只有和平,请在 6 月 3 日与我们一起来\n让我们实现这一目标。\n停止 war ,停止杀害无辜者!\nrop\n杀害\n无辜者\nJUN\n喜欢\n要和平而不是 war !\n美国东部时间周六下午华盛顿白宫,\n184人感兴趣,20人参加\n评论\n感兴趣\n"

示例2:

“BM 分享了他们的事件。\n赞助\n我们很自豪地宣布一项旨在提供免费法律\教育的倡议,以赋予我们的人民权力并加强我们的社区。\n我们相信每月举办这些法律研讨会基础将被证明\n以切实的方式为我们的社区带来好处\n与您见面\n法律\n晚上\n北卡罗来纳州夏洛特\n社区免费法律信息\n1月28日下午5点\n1月\n28\n法律之夜\n周六下午 5 点\n95 人感兴趣 18 人去了\n夏洛特\n* 感兴趣\n19 react \n点赞评论\n"

最佳答案

如果你想匹配后面跟着人走的数字,你可以省略使用 ? 添加可选部分,因为它匹配太多。

您的模式中的某些部分可以优化。假设您没有在代码中单独使用捕获的组并且只想匹配:

  • (P|p) 可以使用 character class 写为 [pP]
  • ([0-9]+)? 可以写成 [0-9]*
  • (G|g).*g 将匹配 G 或 g,直到最后一次出现 g。您可以使用 \S 将其更新为 [Gg]\S*g 以匹配非空白字符。

例如

 \b[0-9]+ [Pp]eople [Gg]oing\b

Regex demo

关于python - 如何避免匹配较长的字符串而选择较短的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57638568/

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