Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 模式每次出现时的正则表达式,它提取=和\s之间的整个文本字符串_Java_Regex - Fatal编程技术网

Java 模式每次出现时的正则表达式,它提取=和\s之间的整个文本字符串

Java 模式每次出现时的正则表达式,它提取=和\s之间的整个文本字符串,java,regex,Java,Regex,我正在创建一个将重新格式化XML文件的程序 e、 g。;下面是XML片段 <ServiceRequest actionCode=KK addedWithoutItinerary=false airlineCode=1S code=ADTK orderNumber=1 serviceCount=1 serviceType=SSR ssrType=AFX> 有什么建议吗?您可以使用此正则表达式进行搜索: =([^\s"

我正在创建一个将重新格式化XML文件的程序

e、 g。;下面是XML片段

<ServiceRequest actionCode=KK
          addedWithoutItinerary=false airlineCode=1S
          code=ADTK orderNumber=1 serviceCount=1
          serviceType=SSR ssrType=AFX>

有什么建议吗?

您可以使用此正则表达式进行搜索:

=([^\s"<>]+) 
正则表达式详细信息:

String repl = xml.replaceAll("=([^\\s\"<>]+)", "=\"$1\"");
  • =
    :匹配一个
    =
  • ([^\s“]+)
    :匹配任何非空白字符的1+,
    ,并将其捕获到组#1中
  • =“$1”
    是替换部件,它将
    =
    和捕获值放在双引号中

您可以使用此正则表达式进行搜索:

=([^\s"<>]+) 
正则表达式详细信息:

String repl = xml.replaceAll("=([^\\s\"<>]+)", "=\"$1\"");
  • =
    :匹配一个
    =
  • ([^\s“]+)
    :匹配任何非空白字符的1+,
    ,并将其捕获到组#1中
  • =“$1”
    是替换部件,它将
    =
    和捕获值放在双引号中

使用XML解析器而不是regext此XML包含大量BOM字符和大量从日志生成的不必要字符串。解析器在这里没有多大帮助。链接问题似乎没有重复,因为它处理的是单个属性
位置
,而不是OP寻求的一般解决方案。使用XML解析器而不是regext。此XML包含大量BOM字符和大量从日志生成的不必要字符串。解析器在这里不会有太大帮助。链接问题似乎不会被复制,因为它只处理一个属性
位置
,而不像OP所寻求的那样是一个通用的解决方案。但这将提取不带=号的确切单词。如果我错了,请提出建议。(?是的,当你建议hi@anubhava时,lookback也会起作用。你能建议如何读取$1的值吗?例如,如果(“$1.equals”(“some value”){//Do something…}如果你想单独获得
$1
的值,那么你需要使用
模式和匹配器
,然后使用
匹配器.group(1)
。您可以查看我在回答中发布的regex101链接中的Java代码示例。是的,这是我知道的方式。我在想是否有一种方法可以直接从元字符中读取值。感谢您的澄清。但这将提取不带=号的确切单词。如果我在这里出错,请提出建议。(?是的,当你建议hi@anubhava时,lookback也会起作用。你能建议如何读取$1的值吗?例如,如果(“$1.equals”(“some value”){//Do something…}如果你想单独获得
$1
的值,那么你需要使用
模式和匹配器
,然后使用
匹配器.group(1)
。您可以查看我在回答中发布的regex101链接中的示例Java代码。是的,这是我知道的方式。我在想是否有一种方法可以直接从元字符读取值。感谢您的澄清。
String repl = xml.replaceAll("=([^\\s\"<>]+)", "=\"$1\"");