【问题标题】:java regular expression matchingjava正则表达式匹配
【发布时间】:2011-03-30 21:11:07
【问题描述】:

什么是正则表达式可以匹配以下2个字符串。

Hi<Dog>Hi 和 <Dog> 在给定的文本中。

更新:

什么正则表达式会匹配这个?

<FONT FACE="Verdana" SIZE="16" COLOR="#0B333C" LETTERSPACING="0" KERNING="0">If you access the web site click the link below:<FONT SIZE="12"></FONT></FONT>

&lt;FONT.*?&lt;\/FONT&gt; 只匹配到第一个 &lt;/FONT&gt;

【问题讨论】:

  • 有 很多 个正则表达式可以匹配这些字符串。例如,“。*”会这样做......以及匹配其他所有内容。请提供有关您尝试执行的操作的更多详细信息。
  • ab&lt;XYZ&gt;ab|&lt;XYZ&gt; 应该匹配这两个 ;)

标签: java html regex matcher


【解决方案1】:

^([a-z]*)&lt;[A-Z]*&gt;\1$ 模式将匹配这些字符串 (as seen on rubular.com):

ab<XYZ>ab
<XYZ>
bleh<FOO>bleh
<>

它不会匹配这些:

ab<XYZ>de
x<XYZ>y
FOO<foo>FOO

也就是说,模式类似于

tag&lt;CONTENT&gt;tag

相同的 tag 出现在“前缀”和“后缀”中。标签由零个或多个小写字母组成。内容由零个或多个大写字母组成。匹配前缀部分和captured by group 1,然后使用反向引用\1 再次匹配该字符串的后缀。

[…] 是 character class。像[aeiou] 这样的东西匹配任何一个小写元音。 [^…] 是一个 否定 字符类。 [^aeiou] 匹配除了小写元音之一。

作为 Java 字符串文字,模式是 "^([a-z]*)&lt;[A-Z]*&gt;\\1$"。

【讨论】:

    【解决方案2】:

    不确定您尝试做什么,但这包含了所有可能相关的组:

    ([a-z]+)?(<[A-Z]+>)([a-z]+)?
    

    祝你好运!

    【讨论】:

      【解决方案3】:

      即兴发挥,我认为应该是 (.*)&lt;XYZ&gt;\1

      【讨论】:

        【解决方案4】:

        使用http://www.weitz.de/regex-coach/检查正则表达式是否匹配字符串

        根据您提供的信息,这是我能给您的唯一建议。

        【讨论】:

          猜你喜欢
          • 2011-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-06
          • 2015-06-03
          • 2011-02-17
          • 2011-01-24
          相关资源
          最近更新 更多