用于组合多个序列的正则表达式
RegEx for combining multiple sequences
和很多人一样,我正在努力解决 "trivial" 正则表达式问题。
在给定的文本中,每当我遇到 {} 括号内的单词时,我需要首先提取 it.At 我使用
"\{-?(\w{3,})\}"
它工作正常:
只要单词中没有任何白色 space 或像 ' 这样的特殊字符。
例如 {Project} returns Project.But {Project Test} 或 {Project D'arce} 不要 return 任何东西。
我知道对于白色字符我需要使用 \s.But 我完全不清楚如何添加到上面,我试过:
"%\{-?(\w(\s{3,})\)\}"))
但不是 working.Also 如果我想添加包含特殊字符(如 ' ???真令人沮丧
如何匹配 {..}
中不是 }
的任何字符?
为此,您可以像 [^}]
一样使用 negated character class [^..]
。所以你的正则表达式可以看起来像
"\{[^}]{3,}\}"
但是如果你只想将你的正则表达式限制在某些特定的字母表上,你也可以使用字符 class 来组合许多字符甚至预定义的 shorthand character classes 如 \w
\s
\d
等等
所以如果你想接受任何单词字符 \w
或空格 \s
或 '
你的正则表达式可以看起来像
"\{[\w\s']{3,}\}"
您可以使用 character class [\w\s']
并向其中添加您允许匹配的内容:
\{-?([\w\s']{3,})}
在Java
String regex = "\{-?([\w\s']{3,})}";
如果你想防止只匹配 3 个空白字符,你可以使用重复组:
\{-?\h*([\w']{3,}(?:\h+[\w']+)*)\h*}
关于图案
\{
匹配 {
字符
-?
可选连字符
\h*
匹配 0+ 次水平空白字符
([\w\s']{3,})
在一个组中捕获匹配 3 次或更多次的单词 char、whitespace char 或 '
(?:\h[\w']+)*
重复 0+ 次匹配 1+ 个水平空白字符,后跟字符中列出的内容 class
\h*
匹配 0+ 次水平空白字符
}
匹配 }
在Java
String regex = "\{-?\h*([\w']{3,}(?:\h+[\w']+)*)\h*}";
和很多人一样,我正在努力解决 "trivial" 正则表达式问题。 在给定的文本中,每当我遇到 {} 括号内的单词时,我需要首先提取 it.At 我使用
"\{-?(\w{3,})\}"
它工作正常:
只要单词中没有任何白色 space 或像 ' 这样的特殊字符。 例如 {Project} returns Project.But {Project Test} 或 {Project D'arce} 不要 return 任何东西。 我知道对于白色字符我需要使用 \s.But 我完全不清楚如何添加到上面,我试过:
"%\{-?(\w(\s{3,})\)\}"))
但不是 working.Also 如果我想添加包含特殊字符(如 ' ???真令人沮丧
如何匹配 {..}
中不是 }
的任何字符?
为此,您可以像 [^}]
一样使用 negated character class [^..]
。所以你的正则表达式可以看起来像
"\{[^}]{3,}\}"
但是如果你只想将你的正则表达式限制在某些特定的字母表上,你也可以使用字符 class 来组合许多字符甚至预定义的 shorthand character classes 如 \w
\s
\d
等等
所以如果你想接受任何单词字符 \w
或空格 \s
或 '
你的正则表达式可以看起来像
"\{[\w\s']{3,}\}"
您可以使用 character class [\w\s']
并向其中添加您允许匹配的内容:
\{-?([\w\s']{3,})}
在Java
String regex = "\{-?([\w\s']{3,})}";
如果你想防止只匹配 3 个空白字符,你可以使用重复组:
\{-?\h*([\w']{3,}(?:\h+[\w']+)*)\h*}
关于图案
\{
匹配{
字符-?
可选连字符\h*
匹配 0+ 次水平空白字符([\w\s']{3,})
在一个组中捕获匹配 3 次或更多次的单词 char、whitespace char 或 '(?:\h[\w']+)*
重复 0+ 次匹配 1+ 个水平空白字符,后跟字符中列出的内容 class\h*
匹配 0+ 次水平空白字符}
匹配}
在Java
String regex = "\{-?\h*([\w']{3,}(?:\h+[\w']+)*)\h*}";