我正在学习正则表达式,我想知道正则表达式要抓取" 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文件
答案 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)
/ =路径([^ \,] +)/
假设,是名称 - 值对的分隔符,此代码对路径参数的值进行分组
() - 定义内部是一个组匹配 [^ \,] - 每个字符除外, +一个或多个字符