regex(正则表达式):解析字符串的可选结尾(如果存在)

regex (regular expression): parse the optional end of the string if it exists

请帮我找到字符串的结尾并解析它。

我有这样的字符串“Some words”和“Some another words||MyTag”。请帮助我使用正则表达式来检查这些字符串中的任何一个。但在第二种情况下,请提取“MyTag”。所以请分成两组:“一些词”或“其他词”和 MyTag 或空字符串。

我试过“^([\W\w]+)(?:||(.*))?”但没有任何成功。

您可以创建 2 个捕获组:

^(.+?)(?:\|\|(.+))?$
  • ^ 字符串开头
  • (.+?) 捕获第1组 尽可能匹配除换行符外的任何字符
  • (?:非捕获组
    • \|\|(.+) 匹配 || 并在组 2
    • 中捕获 1+ 个字符
  • )?关闭非捕获组并使其可选
  • $ 字符串结束

如果第二部分不存在,则不会有第 2 组值。

Regex demo

您也可以考虑在 ||

拆分

没有非贪婪点的另一个选项是不允许匹配 |,只有当它不直接跟在 | 之后使用否定前瞻时。

^([^\r\n|]*(?:\|(?!\|)[^\r\n|]*)*)(?:\|\|(.+))?$

Regex demo