和许多人一样,我正在努力解决看似“微不足道”的正则表达式问题。 在给定的文本中,每当我遇到 {} 括号内的单词时,我都需要提取它。起初我使用
"\\{-?(\\w{3,})\\}"
它工作正常:
只要单词没有任何空格或特殊字符,如 ' 。 例如,{Project} 返回 Project。但 {Project Test} 或 {Project D'arce} 不返回任何内容。 我知道对于白色字符我需要使用\s。但是我完全不清楚如何添加到上面,我试过了:
"%\\{-?(\\w(\\s{3,})\\)\\}"))
但不起作用。另外,如果我想添加包含特殊字符(如 ' ???真是令人沮丧
最佳答案
如何匹配 {..}
中不是 的任何字符?
为此,您可以使用 negated character class [^..]
类似于 [^}]
。所以你的正则表达式可以看起来像
"\\{[^}]{3,}\\}"
但是如果你只想将你的正则表达式限制在某些特定的字母表上,你也可以使用字符类来组合许多字符甚至是预定义的 shorthand character classes像 \w
\s
\d
等等。
所以如果你想接受任何单词字符 \w
或空格 \s
或 '
你的正则表达式可以看起来像
"\\{[\\w\\s']{3,}\\}"
关于java - 用于组合多个序列的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56114427/