代码之家  ›  专栏  ›  技术社区  ›  Krishna Kumar

如何将此正则表达式更改为case instate(查找src标记)

  •  0
  • Krishna Kumar  · 技术社区  · 17 年前
    Regualar expression: <img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]*>
    

    当'src'是小写的并且同时管理单引号和双引号时,这种方法可以很好地工作。 我希望此表达式返回以下测试数据的匹配项

    1. <html><img src ="kk.gif" alt="text"/></html>
    2. <html><img Src ="kk.gif" alt="text"/></html>
    3. <html><img sRC ="kk.gif" alt="text"/></html> (any charcter in 'src' can be uppercase/lowercase)
    4. <html><img SRC ="kk.gif" alt="text"/></html>
    5. <html><img src ='kk.gif' alt="text"/></html>
    
    5 回复  |  直到 17 年前
        1
  •  7
  •   lavinio    17 年前

    Pattern.compile(String, int) . 这将影响整个字符串,这意味着 img 而且

    src 到 [Ss][Rr][Cc] src 部分

        2
  •  2
  •   mirod    17 年前

    在我看来,如果你想处理HTML,最好的方法就是使用真正的HTML解析器。

    虽然我不熟悉Java,但似乎有很多选择: Open Source HTML Parsers in Java .

    这将允许您像处理src之前的其他属性一样处理包含字符“>”的情况,它是有效的HTML,或者包含引号的src属性,可能还有其他一些不太可能但可能的技巧。

        3
  •  1
  •   user85421    17 年前

    Regular expression: (?i)<img[^>]+src\s*=\s*['"]([^'"]+)['"][^>]*>
    

    对于表达式的一部分,请使用“(?i:part)”

    Regular expression: <img[^>]+(?i:src)\s*=\s*['"]([^'"]+)['"][^>]*>
    

    或者只需使用Pattern.compile的第二个参数即可

    Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    

    []]

        4
  •  0
  •   Xn0vv3r    17 年前
        5
  •  0
  •   Alan Moore Chris Ballance    17 年前

    不经意间:
    src 具有 [S|s][R|r][C|c] 如果你只想 案例不敏感适用于 src

    KT