Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个定位点之间文本的正则表达式匹配_Java_Regex - Fatal编程技术网

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)
,应该没有任何问题(我认为)。类似的东西。