在组后使用量词时需要有关正则表达式的帮助
need help on regex when using a quantifier after a group
我想匹配任一字符串 - abc
或 abc*
或 abc?
或 abc{abc}
。以下 .*?(\?|\*|\{.*?\})
正则表达式匹配所有以上 abc
除外。即使 .*?(\?|\*|\{.*?\})?
也不行。
如有任何帮助,我们将不胜感激。 (我正在使用 java)
检查以下模式是否有帮助?
演示: https://regex101.com/r/XtEPSe/2
模式:.+?(\?|\*|\{.*?\}|$)|(?:^$)
详情:
- 已将
.*?
更改为 .+?
。为了匹配空字符串,在末尾添加了一个备用 ^$
。如果不需要,请删除它。
- 添加了替代
$
以匹配 abc
- 捕获组 1 应该会为您提供所需的字符。
使用 .*?
是可选的,并且组中的所有选项也是可选的,这将匹配多个位置和一个空字符串。
你可以做的是使模式更具体一些,例如单词字符 \w+
匹配 abc
之前的交替,并使用字符 abc
稍微缩短交替本身=50=] 和花括号一个否定字符 class 来匹配中间的内容。
\w+(?:[*?]|{[^{}]*})?
部分
\w+
匹配 1+ 个单词字符(使用 .*?
(?:
非捕获组
[*?]
匹配 *
?
|
或
{[^{}]*}
匹配来自 {
..}
)?
关闭群组并使其可选
看到一个Regex demo
我想匹配任一字符串 - abc
或 abc*
或 abc?
或 abc{abc}
。以下 .*?(\?|\*|\{.*?\})
正则表达式匹配所有以上 abc
除外。即使 .*?(\?|\*|\{.*?\})?
也不行。
如有任何帮助,我们将不胜感激。 (我正在使用 java)
检查以下模式是否有帮助?
演示: https://regex101.com/r/XtEPSe/2
模式:.+?(\?|\*|\{.*?\}|$)|(?:^$)
详情:
- 已将
.*?
更改为.+?
。为了匹配空字符串,在末尾添加了一个备用^$
。如果不需要,请删除它。 - 添加了替代
$
以匹配abc
- 捕获组 1 应该会为您提供所需的字符。
使用 .*?
是可选的,并且组中的所有选项也是可选的,这将匹配多个位置和一个空字符串。
你可以做的是使模式更具体一些,例如单词字符 \w+
匹配 abc
之前的交替,并使用字符 abc
稍微缩短交替本身=50=] 和花括号一个否定字符 class 来匹配中间的内容。
\w+(?:[*?]|{[^{}]*})?
部分
\w+
匹配 1+ 个单词字符(使用.*?
(?:
非捕获组[*?]
匹配*
?
|
或{[^{}]*}
匹配来自{
..}
)?
关闭群组并使其可选
看到一个Regex demo