gpt4 book ai didi

regex - 在文本之间不包含空格的匹配正则表达式是什么?

转载 作者:行者123 更新时间:2023-12-04 13:15:10 25 4
gpt4 key购买 nike

我正在寻找一个正则表达式进行匹配,该正则表达式在文本之间不包含空格,但是在文本的开头或结尾可能有也可能没有空格。

最佳答案

您想要这样的东西:(see it in action on rubular.com):

^\s*\S+\s*$

解释:
  • ^是字符串 anchor
  • 的开头
  • $是字符串 anchor
  • 的结尾
  • \s是空白
  • 的字符类
  • \S\s的取反(请注意大小写的区别)
  • *是“零个或多个”重复
  • +是“一个或多个”重复

  • 引用
  • regular-expressions.info/AnchorsCharacter ClassesRepetition


  • “文本”部分可以为空吗?

    上面的模式与一个空字符串不匹配。最初的规范是否很明确,如果这是预期的行为,但是如果允许使用空的“文本”,则只需使用 \S*代替,即匹配 \S的零个或多个(而不是一个或多个)重复。

    因此,此模式(与上述相同,但使用 *代替 +)
    ^\s*\S*\s*$

    将匹配:
  • 空字符串(即长度为0的字符串)
  • 非空字符串,仅包含空格字符


  • 什么算作“文字”字符?

    上面的模式使用 \S定义“文本”字符,即除空格之外的任何字符。这包括标点符号和符号之类的东西,即字符串 " #@^$^* "与两种模式都匹配。尚不清楚这是否是所需的行为,即 " ==== AWESOMENESS ==== "是否可能是所需的匹配项

    即使在这种情况下,该模式仍然有效,我们只需要对字符类定义进行更具体的说明即可。

    例如,此模式:
    /^[^a-z]*[a-z]*[^a-z]*$/i

    将匹配( as seen on rubular.com):
     ==== AWESOMENESS ====

    但不是:
     ==== NOT AWESOME ==== 

    请注意, ^元字符在字符类定义中用作第一个字符时,不再意味着字符串 anchor 的开头,而是对字符类定义的否定。

    还要注意在模式中使用 /i修饰符:这将启用不区分大小写的匹配。实际语法可能会因语言/口味而异。

    引用
  • regular-expressions.info/Modifiers
  • java.util.regex.Pattern.CASE_INSENSITIVE -嵌入式标志为(?i)
  • 关于regex - 在文本之间不包含空格的匹配正则表达式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3020760/

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