gpt4 book ai didi

正则表达式比较一行中的两个子字符串

转载 作者:行者123 更新时间:2023-12-04 09:16:23 25 4
gpt4 key购买 nike

我有一个格式一致的行,它们本质上是分隔的字段/值对,我需要使用单个正则表达式来比较两个字段的值并匹配它们是否相同。我不需要这些值,只需要匹配/不匹配比较。这里有两个例子,第一个应该匹配第二个不应该。

  • @@field1@@someValue@@field2@@someValue@@otherField@@otherValue
  • @@field1@@someValue@@field2@@someDIFFERENTValue@@otherField@@otherValue

  • 我可以匹配已知模式上的任何字段或值,并且我可以使用环视来执行 AND 操作。
    但我不知道如何提取和保存一些模式匹配的值,比如 field1@@(.*?)@@,然后在表达式中使用该“someValue”与 field2@@(.*?)@@ 的“内容”进行比较
    在此先感谢您的帮助。

    最佳答案

    您可以使用

    @@field1@@([^@]*)@@field2@@(?=\1@@)
    @@field1@@((?:(?!@@).)*?)@@field2@@(?=\1@@)
    如果没有 @ 则使用前者在值(value)内容上。否则,使用后一个正则表达式。
    regex demo
    详情
  • @@field1@@ - 文字字符串
  • ([^@]*) - 捕获组 1(在模式的后面,可以用 \1 反向引用来引用):除 @ 之外的任何 0 个或更多字符
  • @@field2@@ - 文字字符串
  • (?=\1@@) - 在当前位置的右侧,必须有与组 1 中捕获的值相同的值,后跟 @@ .如果可能出现字符串结尾,则替换为 (?=\1(?:@@|$)) .
  • (?:(?!@@).)*?模式“大致”表示除 @@ 之外的任何文本,它实际上匹配任何单个字符(换行符除外),尽可能少出现,不以 @@ 开头字符序列。

    关于正则表达式比较一行中的两个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63193246/

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