gpt4 book ai didi

regex - 如何匹配任一/或正则表达式

转载 作者:行者123 更新时间:2023-12-04 13:48:39 24 4
gpt4 key购买 nike

我为 Regex 问题道歉,但是..

我正在开发一个用于抓取职位的正则表达式。

职位名称将始终采用以下格式:

职位名称:Word1 Word2(可选Word3)

目前我有这个:

Job Title: ([A-Z\w]+ [A-Z\w]+)|Job Title: ([A-Z\w]+ [A-Z\w]+ [A-Z\w]+)

我试图让它用两个或三个单词匹配职位,管道字符的每一侧都单独工作(左侧匹配 2 个单词的职位,右侧匹配 3 个单词的职位),但是当我添加管道字符它只适用于左半部分,匹配 2 个单词的职位。

有人知道我做错了什么吗?

注意:我正在使用 Regexper形象化我的表达,它在那里看起来是正确的。

干杯。

最佳答案

这样做的原因是左侧部分可以匹配右侧替代项可以匹配的相同子字符串(在相同位置),并且模式没有被 anchor 定。您要么需要 anchor 定它,要么交换替代方案。或者使用可选组。这是一个增强版:

Job Title: ([A-Z]\w* [A-Z]\w*(?: [A-Z]\w*)?)
^^^^^^^^^^^^^^

regex demo

如果您不关心首字母是小写还是大写,请添加 /i不区分大小写的修饰符(或相应的标志(如 re.IRegexOptions.IgnoreCase 等),取决于正则表达式的风格):
/Job Title: ([A-Z]\w* [A-Z]\w*(?: [A-Z]\w*)?)/i

[A-Z\w]+没有意义,因为 \w匹配 A-Z , 我建议使用 [A-Z]\w* - 大写 ASCII 字母后跟零个或多个字母数字/下划线字符。

非捕获组 (?: [A-Z]\w*)是可选的(这部分可能会从输入中丢失),因为它是用 ? 量化的表示出现一次或零次的量词。

关于regex - 如何匹配任一/或正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36643973/

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