正则表达式匹配捕获组中的文本

时间:2016-12-11 03:02:12

标签: regex string regex-lookarounds capture-group

示例文字:

\- !ruby/object:DynamicAttribute 
  attributes: 
    resource_id: "1"
    resource_type: Applicant
    string_value: "Michael"
    int_value: 
    id: "35972390"
    date_value: 
    name: first_name
  attributes_cache: {}

\- !ruby/object:DynamicAttribute 
  attributes: 
    resource_id: "1"
    resource_type: Applicant
    string_value: "Johnson"
    int_value: 
    id: "35533149"
    date_value: 
    name: last_name
  attributes_cache: {}

:定位:

我试图在" string_value"之后提取值。其中"名称"等于一些字符串。让我们说它等于last_name。属性没有任何特定顺序。我已经探索过使用捕获组,但我没有走得太远。

对此有任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

你可以试试这个正则表达式:

    <%
        Connection con;
        Statement sql;
        ResultSet rs;
        Class.forName("com.mysql.jdbc.Driver").newInstance();

            String uri="jdbc:mysql://localhost:3306/Yk";
            con=DriverManager.getConnection(uri,"root","");
            sql=con.createStatement();
            rs=sql.executeQuery("SELECT * FROM Article");


    %>
    <html>
    <body>

    <% while(rs.next()){
        String paperid = rs.getString("id");
       String papertitle =rs.getString("title");
       String name = rs.getString("name");
    %>


    <table>
        <tr>
            <td width="100">编号</td>
            <td width="100">主题</td>
            <td width="50">内容</td>

        </tr>
        <tr>
            <td width = "100"><%=paperid%></td>
            <td width = "100"><%=papertitle%>
            </td>
            <td width="50"><%=name%></td>

        </tr>   
    </table>   
    </body>
    </html>

Explanation

  1. string_value:(?=(?:(?!attributes_cache).)*name: last_name)\s+\"(\w+)\".*?attributes_cache 匹配字符string_value:
  2. 正向前瞻string_value:它向前看它是否包含(?=(?:(?!attributes_cache).)*name: last_name)但不会超出attributes_cache,否则它可能与下一个可能具有名称的结果集重叠:last_name
  3. name: last_name匹配任何空白字符(等于[\ r \ n \ t \ f \ v])
  4. 量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
  5. \s+字面匹配字符\"(区分大小写)
  6. 第一捕获组":\ w + 匹配任何单词字符(等于[a-zA-Z0-9_])=&gt;这是您要捕获的文本。
  7. 捕获组1包含您要查找的文本。

    虽然您尚未描述编程语言,但以下示例是在ruby上完成的 (run it):

    (\w+)