gpt4 book ai didi

Java正则表达式。获取某些关键字之间的子字符串

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:12 25 4
gpt4 key购买 nike

我需要帮助为这个问题创建最佳的正则表达式。

我有起始和结束定界符的组合/集合,我需要获取所有起始定界符到结束定界符之间的子字符串/任何单词。

假设这个分隔符表:

开始 |结束

猫 |狗

苹果 |橙色

狮子 |斑马

Pandas |猫

示例输入:

substring1 CAT substring2 substring3 DOG substring4 substring5 CAT substring6
APPLE substring7 substring 8 ORANGE ORANGE substring9 DOG substring10 PANDA
substring11 CAT substring12 DOG substring13 LION substring10 substring11 ZEBRA substring12
CAT substring13 substring14 APPLE substring15 substring 16 ORANGE

输出必须是:

  1. CAT substring2 substring3 DOG
  2. APPLE substrin7 substring8 ORANGE
  3. PANDA 子串 11 CAT
  4. LION子串10子串11 ZEBRA
  5. APPLE substring15 substring16 ORANGE

我的正则表达式:

 CAT (.)*? DOG | APPLE (.)*? ORANGE | LION (.)*? ZEBRE |  PANDA (.)*? CAT 

我在处理多次出现其他起始定界符的字符串时遇到问题。

举个例子:

CAT word1 word2 word3 word4 APPLE word5 word6 word7 DOG 

我知道它会匹配这个CAT (.)*? DOG 但这是错误的,因为子字符串包含起始分隔符之一。

我只需要一个正则表达式,如果子字符串不包含任何其他起始分隔符,它将获取起始分隔符到其匹配的结束分隔符之间的所有单词。

有什么建议吗?谢谢

最佳答案

在这里帮助我们的技术称为“lookaround”

在澄清 nfinium 和来自 jsobo 的反馈后,我更新了我的答案

CAT ((?!(APPLE|LION|PANA)).)*? DOG|APPLE ((?!(CAT|LION|PANDA)).)*? ORANGE|LION ((?!(CAT|APPLE|PANDA)).)*? ZEBRA|PANDA ((?!(APPLE|LION)).)*? CAT

给定输入:

substring1 CAT substring2 substring3 DOG substring4 substring5 CAT substring6 APPLE substring7 substring 8 ORANGE ORANGE substring9 DOG substring10 PANDA substring11 CAT substring12 DOG substring13 LION substring10 substring11 ZEBRA substring12 CAT substring13 substring14 APPLE substring15 substring 16 ORANGE  string CAT dkdkdkdkdk CAT dkdkdk dkdkdk ORANGE dkdkdkdk DOG etc. CAT word1 word2 word3 word4 APPLE word5 word6 word7 DOG wordx

匹配

CAT substring2 substring3 DOG
APPLE substring7 substring 8 ORANGE
PANDA substring11 CAT
LION substring10 substring11 ZEBRA
APPLE substring15 substring 16 ORANGE
CAT dkdkdkdkdk CAT dkdkdk dkdkdk ORANGE dkdkdkdk DOG

具体来说,它不会匹配nfinium指示的以下内容

CAT word1 word2 word3 word4 APPLE word5 word6 word7 DOG 

也如你指出的那样匹配

CAT dkdkdkdkdk CAT dkdkdk dkdkdk ORANGE dkdkdkdk DOG 

你说应该匹配下面的

CAT substring12 DOG

但我认为不应该,因为上面的 CAT 是

的结束分隔符
PANDA substring11 CAT

这个正则表达式产生了 nfinium 的预期结果

请注意,根据 nfinium 的要求,CAT 可以是起始分隔符和结束分隔符

CAT | DOG
PANDA | CAT

关于Java正则表达式。获取某些关键字之间的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10651621/

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