长字符串上的 Java 正则表达式(字符串缓冲区)

标签 java regex stringbuffer

我实际上有 2 个问题。 第一个理论 - 如果我在 StringBuffer 中有一个长文本并且我想在其中找到一个正则表达式 - 我是否必须担心 StringBuffer 会占用 StringBuffer 的 block 寻找每个 block 内的正则表达式,如果它在任何 block 中都找不到这样的正则表达式,它会看起来好像文本中的正则表达式不存在?如果正则表达式的一部分位于一个 block 的边界,而正则表达式的其余部分位于相邻 block 的边界怎么办?

第二个:

String patternString1 = "(\\[\\[Category.*\\]\\])";
Pattern pattern1 = Pattern.compile(patternString1);
Matcher matcher1 = pattern1.matcher(text);
while (matcher1.find()){
System.out.println(matcher1.group(1));
}

我想从字符串中提取所有看起来像 [[Category: .*]] 的表达式,但是如果整个文本看起来像这样:

[[类别:PrintingOut [[惠普打印机]] [[惠普]] ]] [[LaserJet]]

我想确保“]]”是我正则表达式的结尾。换句话说,如果我在表达式中找到 [[ .* ]],我不希望内部 [[.*]] 的结尾被视为整个表达式的结尾。

最佳答案

这可能对你有帮助。

\[\[Category:.*?\s\]\]

这是关于 Debuggex 的演示


编辑

在关闭之前尝试下面的正则表达式,如果有或没有空格,它会起作用 ]]

\[\[Category:.*?[(\]\])\s]+\]\]

这是关于 Debuggex 的演示

注意:只需将此正则表达式模式包含在 () 中,并在索引 1 处获取组。

关于长字符串上的 Java 正则表达式(字符串缓冲区),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24218863/

相关文章:

Java并发异常

java - 如何知道一个方法被主类调用了多少次?

java - 拆分返回 PatternSyntaxException : Illegal/unsupported escape sequence

java - 基于字符串的游标定位

java - Java方法中的最终变量

java - org.apache.catalina.LifecycleException : Failed to start component [StandardEngine[Catalina]. StandardHost[本地主机].StandardContext[/mmasgis]]

regex - 如何使用 shell 脚本查找 Linux 发行版名称?

python - re.sub 在标点符号和以标点符号开头或结尾的单词之间放置空格

java - 使用 StringBuilder 在代码上运行 pmd 会给出有关初始化大小和附加大小的错误

java - StringBuffer 对象可以成为 Java 中 TreeSet 中的键吗?