什么是某段文本的正则表达式(正则表达式)

时间:2015-08-11 18:56:55

标签: java regex

我正在学习正则表达式,我想知道正则表达式要抓取" path = / return /..."对于以下文字:

  

StartTopic topic = testParser,multiCopy = false,required = true,   all = false,path = / Return / ReturnData / IRSW2

非常感谢任何有关好网站的帮助或指示

编辑:

if(c.getNodeType() ==Node.ELEMENT_NODE) {
    Element cell = (Element) c;
    String value = cell.getAttribute("value");

    // So value here equals StartTopic topic=testParser, multiCopy=false, required=true, all=false, path=/Return/ReturnData/IRSW2
    if(value.contains("path")) {

        // I want just this part "path=/Return/ReturnData/IRSW2"
        // Inside regex.txt I have this text "/path=([^\,]+)/"
        String str = FileUtils.readFileToString(new File("regex.txt"));
        String escapedChars = StringEscapeUtils.escapeJava(str);

        Matcher matcher = Pattern.compile(value+escapedChars).matcher(value);
        System.out.println(matcher);

        // never enters this for loop
        if(matcher.matches()) {
            System.out.println(matcher);
        }

输出:

Test!
java.util.regex.Matcher[pattern=StartTopic topic=testParser, multiCopy=false, required=true, all=false, path=/Return/ReturnData/IRSW2/path=([^\\,]+)/ region=0,101 lastmatch=]

为了清楚起见,我想做一些非常简单的事情。

我有一个字符串对象"值"其中包含一串字符串。我只希望这个字符串的一个特定部分以" path ="开头。以及#34; / Return / [... etc]"之后的所有内容,我想用这个文本构建一个xml文件

2 个答案:

答案 0 :(得分:1)

这是众多方式之一

public static void main(String[] args) {
String str = "StartTopic topic=testParser, multiCopy=false, required=true, all=false, path=/Return/ReturnData/IRSW2";
System.out.println(str.replaceAll(".*\\s+(path=.*)$","$1"));
}

O / P

path=/Return/ReturnData/IRSW2

其他方式包括基于","并抓住最后一个元素。或者只捕获以path..开头的组。

答案 1 :(得分:1)

/ =路径([^ \,] +)/

假设,是名称 - 值对的分隔符,此代码对路径参数的值进行分组

() - 定义内部是一个组匹配 [^ \,] - 每个字符除外, +一个或多个字符