gpt4 book ai didi

.net - 正则表达式 - 在字符之间获取单词

转载 作者:行者123 更新时间:2023-12-03 18:27:24 25 4
gpt4 key购买 nike

给定以下示例字符串:"[ One].[Two ].[ Three ].[Four]"我想匹配“一”; “二”、“三”、“四”。

换句话说:我需要得到括号之间的词,不管这个词周围有多少空格。

我用以下表达式尝试过:

(?<=\[)(?s)(.*?)(?=\s*\])

结果是 " One" , "Two" , " Three""Four" .

编辑:
这比我最初想象的要复杂一点:
  • 有许多(至少一个)词被括号封装,可能由任意字符分隔(例如 "[one]""[one] [two][three].[four]" )。
  • 括号包含一个单词和多个,甚至没有空格(例如 "[one]""[two ]""[ three ]" .
  • 这些单词块和括起来的括号被一个已知的字符序列包围:"These words [word-1] .. [word-n] are well known"或者"These words [word-1] .. [word-n] are well known" .

  • 请注意 "[word-1] .. [word-n]"仅代表上述块的任意计数。

    我只想匹配括号之间的单个单词并消除环绕序列( "These words""are well known" )以及括号内和块之间可能存在的空格。此外,块之间可能存在的字符(不能超过一个)也应该被消除。
    希望这不是太奇怪;)

    最佳答案

    您可以使用它,并启用“全局”标志

    \[\s*(\S+?)\s*\]

    解释

    \[ # 一个文字 "["
    \s* # 任意数量的空格
    (\S+?) # 至少一个非空白字符,非贪婪(组 1)
    \s* # 任意数量的空格
    \] # 文字“]”


    编辑:

    @Kobi注意到 \S+?实际上可以匹配 ]在像 "[ One]" 这样的目标中.因此,有一段时间,组 1 将包含 "One]" .

    但是还有 \]在正则表达式的末尾,此时正则表达式引擎将回溯并给出 "]"\] ,所以表达式可以成功。

    在这里使用贪婪匹配非常重要( \S+? ,而不是 \S+ )。我在答案的第一个版本中也弄错了。

    此外, \S非常不具体。如果你有什么更具体的关于“一个词”对你来说是什么——无论如何,使用它。

    关于.net - 正则表达式 - 在字符之间获取单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114319/

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