Java 模式每次出现时的正则表达式,它提取=和\s之间的整个文本字符串
我正在创建一个将重新格式化XML文件的程序 e、 g。;下面是XML片段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"
<ServiceRequest actionCode=KK
addedWithoutItinerary=false airlineCode=1S
code=ADTK orderNumber=1 serviceCount=1
serviceType=SSR ssrType=AFX>
有什么建议吗?您可以使用此正则表达式进行搜索:
=([^\s"<>]+)
正则表达式详细信息:
String repl = xml.replaceAll("=([^\\s\"<>]+)", "=\"$1\"");
:匹配一个=
=
:匹配任何非空白字符的1+,([^\s“]+)
,“
,并将其捕获到组#1中”
是替换部件,它将=“$1”
和捕获值放在双引号中=
=([^\s"<>]+)
正则表达式详细信息:
String repl = xml.replaceAll("=([^\\s\"<>]+)", "=\"$1\"");
:匹配一个=
=
:匹配任何非空白字符的1+,([^\s“]+)
,“
,并将其捕获到组#1中”
是替换部件,它将=“$1”
和捕获值放在双引号中=
位置
,而不是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\"");