Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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_Xml_Regex Negation - Fatal编程技术网

java正则表达式-获取之前没有特定单词的特定索引

java正则表达式-获取之前没有特定单词的特定索引,java,regex,xml,regex-negation,Java,Regex,Xml,Regex Negation,我试图在一个xml字符串上添加双引号,只在特定的位置 这里是一个xml内容的示例 <opr:sec name=display> <opr:fld name=fieldName>Value1</opr:fld> <opr:fld name=someName>value2</opr:fld> 价值1 价值2 我需要添加双引号,如:name=“fieldName”,并且每行的字段名都不同 第一个双引号很简单,

我试图在一个xml字符串上添加双引号,只在特定的位置

这里是一个xml内容的示例

    <opr:sec name=display>
     <opr:fld name=fieldName>Value1</opr:fld>
     <opr:fld name=someName>value2</opr:fld>

价值1
价值2
我需要添加双引号,如:name=“fieldName”,并且每行的字段名都不同

第一个双引号很简单,使用的名称=必须在

但对于结束双引号,我想使用>符号,但需要避免结尾的fld


如何正则化一封之前没有特定文本的信这里有一个更简单的方法来做你想做的事。
使用此正则表达式:
name=([^>]*)>

并将其替换为:

name=“$1”>

这里有一个更简单的方法来做你想做的事。
使用此正则表达式:
name=([^>]*)>

并将其替换为:

name=“$1”>

您可以使用捕获块,将线拆分为3个块,并从块中重建线:

String line = "<opr:fld name=fieldName>Value1</opr:fld>";
String regex = "(.*name=)(.*)(>.*>)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(line);
matcher.matches();
String result = matcher.group(1) + "\"" + matcher.group(2) + "\"" + matcher.group(3);
System.out.println(result);
String line=“Value1”;
字符串regex=“(.*name=)(.*)(>.>)”;
Pattern=Pattern.compile(regex);
匹配器匹配器=模式匹配器(线);
matcher.matches();
字符串结果=matcher.group(1)+“\”+matcher.group(2)+“\”+matcher.group(3);
系统输出打印项次(结果);

您可以使用捕捉块,将线条拆分为3个块,然后从片段中重建线条:

String line = "<opr:fld name=fieldName>Value1</opr:fld>";
String regex = "(.*name=)(.*)(>.*>)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(line);
matcher.matches();
String result = matcher.group(1) + "\"" + matcher.group(2) + "\"" + matcher.group(3);
System.out.println(result);
String line=“Value1”;
字符串regex=“(.*name=)(.*)(>.>)”;
Pattern=Pattern.compile(regex);
匹配器匹配器=模式匹配器(线);
matcher.matches();
字符串结果=matcher.group(1)+“\”+matcher.group(2)+“\”+matcher.group(3);
系统输出打印项次(结果);

@Benius:随时都可以!不过,我的回答有些问题:如果您要引用的字段中有
,那么它将不起作用。如果这是你的情况,我可以随时更新我的答案。@Benius:随时!不过,我的回答有些问题:如果您要引用的字段中有
,那么它将不起作用。如果这是你的情况,我可以更新我的答案。