繁体   English   中英

Java Regex检查字符串是否包含XML标记

[英]Java Regex check if string contains XML tag

我试图使用String.match()函数确定字符串是否包含至少一个XML标记。 由于项目的设置方式,我更愿意,如果我不必使用Pattern

目前我使用这个正则表达式:

<[A-Za-z0-9]+>

这显然只检查字符串是否包含包含文本的右箭头括号和左箭头括号。 我需要的是一种方法来检查字符串是否只有一个带有Regex的XML标签,例如输入如下:

blah <abc foo="bar">blah</abc> blah
blah <abc foo="bar"/>

但不输入如下:

blah <abc> blah
blah <abc </abc> blah

那可能吗?

这个:

if (input.matches("(?s).*(<(\\w+)[^>]*>.*</\\2>|<(\\w+)[^>]*/>).*"))

匹配两种类型的标签(标准和自动关闭):

<abc foo="bar">blah</abc>
<abc foo="bar"/>

不匹配不完整的标签,如:

<abc>

请参阅regex现场演示

您可以使用:

if (input.matches("(?s).*?<(\\S+?)[^>]*>.*?</\\1>.*")) {
    // String has a XML tag
}

(?s)DOTALL标志,也可以使DOT匹配换行符。

RegEx演示

好的,这个正则表达式将匹配大多数html / xml标签。
可能只需要节点标签,其余的可以剥离。

只是节点标签(最终编辑) -

 # "(?s)<(?:/?[\\w:]+\\s*|[\\w:]+(?:\".*?\"|'.*?'|[^>]*?)+)>"

 (?s)
 <
 (?:
      /?
      [\w:]+ 
      \s* 
   |  
      [\w:]+ 
      (?: " .*? " | ' .*? ' | [^>]*? )+
 )
 >

全 -

格式:

 # "<(?:(?:/?[\\w:]+\\s*/?)|(?:[\\w:]+\\s+(?:(?:(?:\"[\\S\\s]*?\")|(?:'[\\S\\s]*?'))|(?:[^>]*?))+\\s*/?)|\\?[\\S\\s]*?\\?|(?:!(?:(?:DOCTYPE[\\S\\s]*?)|(?:\\[CDATA\\[[\\S\\s]*?\\]\\])|(?:--[\\S\\s]*?--)|(?:ATTLIST[\\S\\s]*?)|(?:ENTITY[\\S\\s]*?)|(?:ELEMENT[\\S\\s]*?))))>"

 <
 (?:
      (?:
           /? 
           [\w:]+ 
           \s* 
           /? 
      )
   |  
      (?:
           [\w:]+ 
           \s+ 
           (?:
                (?:
                     (?: " [\S\s]*? " )
                  |  (?: ' [\S\s]*? ' )
                )
             |  (?: [^>]*? )
           )+
           \s* 
           /? 
      )
   |  
      \?
      [\S\s]*? 
      \?
   |  
      (?:
           !
           (?:
                (?:
                     DOCTYPE
                     [\S\s]*? 
                )
             |  (?:
                     \[CDATA\[
                     [\S\s]*? 
                     \]\]
                )
             |  (?:
                     --
                     [\S\s]*? 
                     --
                )
             |  (?:
                     ATTLIST
                     [\S\s]*? 
                )
             |  (?:
                     ENTITY
                     [\S\s]*? 
                )
             |  (?:
                     ELEMENT
                     [\S\s]*? 
                )
           )
      )
 )
 >

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM