2016-03-01 80 views
1

我有一个包含如何使用正则表达式从html标记中提取FirstName和LastName?

"<h3 class="panel-title">Welcome 
           First Last </h3>" 

反应的身体我要取“第一个最后”作为输出

正则表达式我已经试过被

"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>"它正在检测在线正则表达式制造商。

+4

正则表达式和HTML不是好朋友。 – Maroun

+2

您的正则表达式工作原理:[组2和4包含您的数据](https://regex101.com/r/dK9sE0/1)。 –

+0

看看这个问题和答案有关跨多行匹配:http:// stackoverflow。com/questions/159118/how-do-i-match-any-character-across-multiple-lines-in-a-regular-expression – MarkNFI

回答

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,请尝试其他答案)

+0

嘿......谢谢!为我工作......你的猜测是对的。我正在努力与换行。 – Shivalika

+0

谢谢Shivalika。如果您将我的答案标记为“正确” –

-1

正则表达式是由默认的贪婪,试试这个

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

1和2组包含数据

检查它here

+1

*正则表达式默认为贪婪*完全不正确。另外,OP正则表达式的作品。没有必要重写OP的正则表达式。 OP需要知道如何在jmeter中使用该正则表达式。 –

+0

我尝试过使用http://scriptular.com/不工作! – Shivalika

+0

您能否详细说明OP的含义? – Shivalika

0

嗯,我通常不建议对正则表达式这种工作的。 DOM操作发挥最大作用。

但你可以用下面的正则表达式来抽出文字:

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

见演示在https://regex101.com/r/wA2sZ9/1

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

0

在JMeter的REG EXP提取你可以使用:

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

使用$ 1 $然后取值。

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

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

否则上面的一个就足够了。

首先在jmeter中使用响应体的正则表达式测试程序验证这一点。

0

欢迎([\ S \ S] +?)<

试试这个,它肯定会工作。

+0

的人的性别中性版本您可以看到演示:-https://regex101.com/r/oM1rV2/1 – vikas