正则表达式匹配点后括号内的管道分隔字符串

美国布勒

我已经尝试编写这个正则表达式两天了,但失败了,我现在很绝望,希望得到社区的任何帮助。

以下是一些测试用例,说明了我要实现的目标:

姓名 输入 第一场 第 2 场比赛
无匹配 lorem ipsus —— ——
没有管道的火柴 lorem {{ . }} ipsus {{ . }} ——
与单管匹配 lorem {{ . | firstPipe }} ipsus {{ . | firstPipe }} firstPipe
双管匹配 lorem {{ . | firstPipe | secondPipe }} ipsus {{ . | firstPipe | secondPipe }} firstPipe | secondPipe
匹配空白容忍 lorem {{ .| firstPipe |secondPipe }} ipsus {{ .| firstPipe |secondPipe }} firstPipe |secondPipe
匹配空白容忍 lorem {{ .|firstPipe| secondPipe}} ipsus {{ . | firstPipe | secondPipe }} firstPipe| secondPipe

我正在寻找的东西应该对空格不敏感。这意味着即使在管道字符、括号或点之前/之后缺少空格,它仍然应该匹配。

匹配 1:将括号内的所有内容与可选的空格匹配并带有点。类似的东西{{\s*.\s*}}

匹配 2:这是可选的。这是我无法工作的原因。我会接受在括号结束之前返回管道分隔字符串或每个命名管道的匹配项的行为。

感谢您阅读问题。我希望我能说清楚。

理查德·捷克

{{[^{}|]*(?:\|\s*((?:(?!{{).)*?)\s*)?}}

请参阅正则表达式证明

解释

--------------------------------------------------------------------------------
  {{                       '{{'
--------------------------------------------------------------------------------
  [^{}|]*                  any character except: '{', '}', '|' (0 or
                           more times (matching the most amount
                           possible))
--------------------------------------------------------------------------------
  (?:                      group, but do not capture (optional
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    \|                       '|'
--------------------------------------------------------------------------------
    \s*                      whitespace (\n, \r, \t, \f, and " ") (0
                             or more times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
    (                        group and capture to \1:
--------------------------------------------------------------------------------
      (?:                      group, but do not capture (0 or more
                               times (matching the least amount
                               possible)):
--------------------------------------------------------------------------------
        (?!                      look ahead to see if there is not:
--------------------------------------------------------------------------------
          {{                       '{{'
--------------------------------------------------------------------------------
        )                        end of look-ahead
--------------------------------------------------------------------------------
        .                        any character except \n
--------------------------------------------------------------------------------
      )*?                      end of grouping
--------------------------------------------------------------------------------
    )                        end of \1
--------------------------------------------------------------------------------
    \s*                      whitespace (\n, \r, \t, \f, and " ") (0
                             or more times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  )?                       end of grouping
--------------------------------------------------------------------------------
  }}                       '}}'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式匹配方括号内的字符串,用冒号分隔

正则表达式以匹配包含以点分隔的子字符串的字符串

正则表达式匹配方括号内大括号内的字符串

正则表达式以匹配括号或括号内的字符串中的数字

正则表达式匹配单个或管道分隔的字符串实例

正则表达式检索用逗号分隔的括号内的字符串部分

正则表达式,用于匹配字符串分隔符内的任何字符

正则表达式匹配字符串不在括号内

如何创建正则表达式以匹配括号内的特定子字符串?

正则表达式匹配括号内的字符串

正则表达式匹配大括号内的字符串

正则表达式后匹配字符串

我想在字符串正则表达式后匹配点吗?

格式为 @ 或 # 的正则表达式匹配字符串后跟不包含空格的点分隔字符串

正则表达式-字符串内匹配

正则表达式的Java分裂逗号分隔的字符串,但忽略了逗号报价+支架+递归括号内

正则表达式匹配括号和逗号之间的字符串,但存在多个括号

Python正则表达式可分隔以括号结尾的数字的字符串

正则表达式-如何用逗号分隔字符串,省略括号中的逗号

前括号(包括内括号)之间的Javascript正则表达式字符串

使用正则表达式获取括号内的字符串,删除括号

如何在括号正则表达式内的括号外获取字符串

管道分隔符字符串中的 Oracle 正则表达式选择值

正则表达式提取由管道分隔的字符串的第n个令牌

MySQL正则表达式在字符串的开头或结尾匹配括号字符

正则表达式匹配用大括号括起来的多个单词,用下划线分隔/分隔,但忽略字符串开头/结尾的字符?

正则表达式匹配列分隔的字符串,除非它以连字符开头

逗号或括号之间的正则表达式字符串,但不包含点

正则表达式:如何根据负前瞻和后视将子字符串放在括号内?