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 组值。
您也可以考虑在 ||
拆分
没有非贪婪点的另一个选项是不允许匹配 |
,只有当它不直接跟在 |
之后使用否定前瞻时。
^([^\r\n|]*(?:\|(?!\|)[^\r\n|]*)*)(?:\|\|(.+))?$
请帮我找到字符串的结尾并解析它。
我有这样的字符串“Some words”和“Some another words||MyTag”。请帮助我使用正则表达式来检查这些字符串中的任何一个。但在第二种情况下,请提取“MyTag”。所以请分成两组:“一些词”或“其他词”和 MyTag 或空字符串。
我试过“^([\W\w]+)(?:||(.*))?”但没有任何成功。
您可以创建 2 个捕获组:
^(.+?)(?:\|\|(.+))?$
^
字符串开头(.+?)
捕获第1组 尽可能匹配除换行符外的任何字符(?:
非捕获组\|\|(.+)
匹配||
并在组 2 中捕获 1+ 个字符
)?
关闭非捕获组并使其可选$
字符串结束
如果第二部分不存在,则不会有第 2 组值。
您也可以考虑在 ||
没有非贪婪点的另一个选项是不允许匹配 |
,只有当它不直接跟在 |
之后使用否定前瞻时。
^([^\r\n|]*(?:\|(?!\|)[^\r\n|]*)*)(?:\|\|(.+))?$