示例文字:
\- !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。属性没有任何特定顺序。我已经探索过使用捕获组,但我没有走得太远。
对此有任何帮助将不胜感激。谢谢!
答案 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>
string_value:(?=(?:(?!attributes_cache).)*name: last_name)\s+\"(\w+)\".*?attributes_cache
匹配字符string_value:
string_value:
它向前看它是否包含(?=(?:(?!attributes_cache).)*name: last_name)
但不会超出attributes_cache,否则它可能与下一个可能具有名称的结果集重叠:last_name name: last_name
匹配任何空白字符(等于[\ r \ n \ t \ f \ v])\s+
字面匹配字符\"
(区分大小写)"
:\ w +
匹配任何单词字符(等于[a-zA-Z0-9_])=&gt;这是您要捕获的文本。捕获组1包含您要查找的文本。
虽然您尚未描述编程语言,但以下示例是在ruby上完成的 (run it):
(\w+)