如何使用正则表达式从html标签中提取FirstName和LastName?

时间:2016-03-01 13:25:32

标签: regex jmeter

我有包含

的回复正文
"<h3 class="panel-title">Welcome 
                                First Last </h3>"

我想要获取“最后一次”&#39;作为输出

我试过的正则表达式是

"Welcome(\s*([A-Za-z]+))(\s*([A-Za-z]+))" 
"Welcome \s*([A-Za-z]+)\s*([A-Za-z]+)"

但无法得到结果。如果我删除换行符并将其视为 "<h3 class="panel-title">Welcome First Last </h3>"它正在网上正则表达式制作中检测到​​。

5 个答案:

答案 0 :(得分:0)

好吧,通常我不建议使用正则表达式进行此类工作。 DOM操作发挥最佳作用。

但您可以使用以下正则表达式来填充文本:

/(?:<h3.*?>)([^<]+)(?:<\/h3>)/i

请参阅https://regex101.com/r/wA2sZ9/1

上的演示

这将提取包括额外间距的名字和姓氏。我相信你可以轻松处理空间。

答案 1 :(得分:0)

在jmeter reg exp提取器中,您可以使用:

<h3 class="panel-title">Welcome(.*?)</h3>

然后使用$ 1 $。

获取价值

在您显示的数据中,欢迎之后是enter。如果它实际上是响应的一部分,那么您必须使用\ n。

  <h3 class="panel-title">Welcome\n(.*?)</h3>

否则就足够了。

首先使用响应体的正则表达式测试仪在jmeter中验证。

答案 2 :(得分:0)

欢迎([\ S \ S] +?)&LT;

试试这个,一定会有效。

答案 3 :(得分:0)

我怀疑你的问题是“欢迎”和用户名之间的回车。如果在正则表达式中使用“单行模式”标志(?s),它将忽略换行符。试试这些:

(?s)Welcome(\s*([A-Za-z]+))(\s*([A-Za-z]+)) 

(?s)Welcome \s*([A-Za-z]+)\s*([A-Za-z]+)

(这适用于jMeter和任何其他基于java或php的正则表达式,但不适用于javascript。在问题的评论中你说你正在使用javascript和jMeter - 如果它是一个jMeter问题,那么这将有所帮助如果是javaScript,请尝试其他答案之一)

答案 4 :(得分:-1)

默认情况下正则表达式是贪婪的,试试这个

Welcome\s*([A-Za-z]+)\s*([A-Za-z]+)

第1组和第2组包含您的数据

检查here