Java正则表达式检查字符串是否包含XML标记

Java正则表达式检查字符串是否包含XML标记,java,regex,xml,Java,Regex,Xml,我试图使用string.match()函数确定字符串是否至少包含一个XML标记。由于项目的设置方式,如果我不必使用模式,我会更喜欢 目前我使用这个正则表达式: <[A-Za-z0-9]+> 这显然只检查字符串是否有包含文本的左右箭头括号。我需要的是一种检查字符串是否只有一个带有Regex的XML标记的方法,例如输入: blah <abc foo="bar">blah</abc> blah blah <abc foo="bar"/> blah

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

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

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

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

blah <abc foo="bar">blah</abc> blah
blah <abc foo="bar"/>
blah <abc> blah
blah <abc </abc> blah
废话废话
废话
但不是像这样的输入:

blah <abc foo="bar">blah</abc> blah
blah <abc foo="bar"/>
blah <abc> blah
blah <abc </abc> blah
废话
等等您可以使用:

if (input.matches("(?s).*?<(\\S+?)[^>]*>.*?</\\1>.*")) {
    // String has a XML tag
}
if(input.matches((?)*?]*>*?*){
//字符串有一个XML标记
}
(?s)
DOTALL
标志,用于使点也与换行符匹配

这是:

if (input.matches("(?s).*(<(\\w+)[^>]*>.*</\\2>|<(\\w+)[^>]*/>).*"))
if(input.matches((?s)。*(]*>.*
匹配两种类型的标记(标准和自动关闭):


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

仅节点标记(最终编辑)——

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

“]*?)+\\s*/?)\\?[\\s\\s]*?\?\?(?:!(?:(?:DOCTYPE[\\s\\s]*?)(?:\[CDATA\[\[\\s]*?\]\])\(?:--[\\s\\s]*?-)(?:ATTLIST[\\s]*?)(?:ATTLIST[\\s]*)(?:ENTITY[\\s]*)*)(?:ENTITY[\\s\\\\\\\\\\\)*)。”
<
(?:
(?:
/? 
[\w:]
\s*
/? 
)
|  
(?:
[\w:]
\s+
(?:
(?:
(?:“[\S\S]*?”)
|(?:'[\S\S]*?')
)
|  (?: [^>]*? )
)+
\s*
/? 
)
|  
\?
[\S\S]*?
\?
|  
(?:
!
(?:
(?:
DOCTYPE
[\S\S]*?
)
|  (?:
\[CDATA\[
[\S\S]*?
\]\]
)
|  (?:
--
[\S\S]*?
--
)
|  (?:
名单
[\S\S]*?
)
|  (?:
实体
[\S\S]*?
)
|  (?:
元素
[\S\S]*?
)
)
)
)
>

使用Find函数,我认为match意味着正则表达式必须匹配整个字符串。还有,xml标记是什么意思?打开、关闭或其他形式?@sln啊,我假设Regex也可以进行部分匹配。我所说的标签也不重要。我只需要验证至少有一个xml节点。但是有一个带有闭包的节点吗?这不是验证。@sln抱歉,我不明白?我只是想验证所提供的字符串中是否有
。我是否只能验证其中一个并不重要。如果元素具有属性,则此正则表达式将失败。不过,不清楚请求者想要的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]*? 
                )
           )
      )
 )
 >