Java 两个定位点之间文本的正则表达式匹配
我需要一个只针对以下示例中列出的项目的正则表达式:Java 两个定位点之间文本的正则表达式匹配,java,regex,Java,Regex,我需要一个只针对以下示例中列出的项目的正则表达式: The category: A short description about the following list: Item 1, Located at Place 1 Item 2, Located at Place 2 Item 3, Located at Place 3 The next category: 我可以在“类别”之后和“下一个类别:”之前匹配所有内容,但我不能只获取项目。示例说明将随文档的不同而变化 这将与Java一起
The category:
A short description about the following list:
Item 1, Located at Place 1
Item 2, Located at Place 2
Item 3, Located at Place 3
The next category:
我可以在“类别”之后和“下一个类别:”之前匹配所有内容,但我不能只获取项目。示例说明将随文档的不同而变化
这将与Java一起使用,但如果可能的话,我更喜欢使用纯正则表达式示例
我已经为此工作了好几个小时了,我正在努力工作。非常感谢您的帮助。不要为此使用正则表达式。编写一个简单的解析器:
var lines = text.split('\n');
var category = '',
categoryLine = 0;
for (var i = 0; i < lines.length; i++) {
var line = lines[i];
if (/category:$/.test(line)) {
// beginning of a new category
category = line;
categoryLine = i;
console.log('BEGIN CATEGORY: ' + line);
} else if (i == categoryLine + 1) {
// description line (skip)
} else {
// this is an item in a list
console.log('category="%s" item="%s"',
category, line);
}
}
var lines=text.split('\n');
var类别=“”,
儿茶碱=0;
对于(变量i=0;i
假设:
- 类别行始终以
Category:
- 每个类别后面都有一个描述行
- 所有其他行都是项目
The category:\\s*[^:]*:\\s*([^:]*)\\s+The next category:
[^:::]*
匹配除冒号以外的任何字符<代码>\\s+用于换行符。另外,正则表达式的其余部分是非常文字化的。你怎么知道OP想要用JavaScript编写它呢?他将随机命名categories@aelorOP提到:“示例描述将随着文档的变化而变化”。没有提到类别,OP已经提到“我可以在“类别”之后和“下一个类别:”之前匹配所有内容,所以这两个都必须是文字。@Jerry-这几乎正是我需要的。您的正则表达式示例将显示为两个匹配项:(1)全文示例,以及(2)全文示例中的特定列表。只有第二部分可以匹配吗?谢谢@TinActon抱歉,我忘了Java的正则表达式不支持Perl或C#所支持的其他一些功能,因此,我不知道有什么方法可以单独匹配列表:(@TinActon如果使用matcher.group(1)
,应该没有任何问题(我认为)。类似的东西。