繁体   English   中英

长字符串上的Java正则表达式(String buffer)

[英]Java regex on a long string(String buffer)

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

第二:

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

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

[[类别:PrintingOut [[打印机HP]] [[HewlettPackard]] ]] [[LaserJet]]

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

这可能对你有帮助。

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

这是Debuggex上的演示


编辑

尝试下面的正则表达式,如果在关闭之前有空格,将会有效]]

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

这是Debuggex上的演示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM