java - 用于组合多个序列的正则表达式

标签 java regex regex-negation regex-lookarounds

和许多人一样,我正在努力解决看似“微不足道”的正则表达式问题。 在给定的文本中,每当我遇到 {} 括号内的单词时,我都需要提取它。起初我使用

"\\{-?(\\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/

相关文章:

java - 防止 fragment restoreViewState()

jvm - 桌面上的 JVM 是否使用 JIT 编译?

java - 在 Java 中模拟鸭子类型(duck typing)

regex - 使用ack或awk或比grep更好的方法从另一个文件中获取模式?

java - eclipse - 查找并替换变量名称中的下划线字符

c# - Regex.Split 特定字符

java - 无法使用 apktool : "Asset package include not found" 编译应用程序

c# - 为什么正则表达式返回一位数字?

python - 匹配字符串中不是特定字符的连续片段的部分

java - IPV6 地址在 Java 中转换为压缩形式