2012-04-20 39 views
2

报价我试图找出一种方法来匹配以下测试字符串:需要帮助的正则表达式匹配一个单引号,但不包括在结果

token = '1866FB352F4DF76BCB92C3482DB7D7B4F562'; 

我想返回的数据。 ..

1866FB352F4DF76BCB92C3482DB7D7B4F562 

我试过下面,我有关闭是这样的,但它是包括在最后的单引号:

(?!token = ')(\w+)'; 

现在,另外一个,它密切合作,但它包括最后一个单引号:

'([^']+)' 

任何人想利用这一个刺?

更新:在看什么,我需要解析后,我发现在HTML相同的值,在形式方面,它看起来像它可能更容易抓住:

name="token" value="482CD1FE037F68D5A36F4C961A6D57D9" 

再次,我只是需要值内的内容=“*”

但是,正则表达式将不得不解析整个html源代码,所以我假设我需要搜索名称=“toke”value =,但不包括在结果集中。

回答

1

如果您正则表达式引擎支持lookaround,您可以使用

(?<=')\w+(?=') 

,如果它是由单引号,而无需对这些引号的实际比赛的一部分,这相匹配的字母词。如果你只想匹配十六进制数,使用

(?i)(?<=')[0-9A-F]+(?=') 

编辑:

既然你现在加入您使用JMeter的,因为JMeter的不支持向后断言原因无法理解我(因为Java本身并不支持它就好了),你都不可能欺骗这样的:

\b[0-9A-F]+(?=') 

只检查是否'字符前右侧出现一个完整的十六进制数。它不检查是否存在开盘报价,但有可能这没有关系。

+0

谢谢,看JMeter是否支持在正则表达式测试仪中查找 – Whnunlife 2012-04-20 17:28:22

+0

请注意,JMeter不支持'(?<= regexp)'(lookbehind) – 2012-04-20 17:47:41

+0

@stackoverflow:有趣的,我想知道为什么JMeter不使用Java的正则表达式图书馆。 – 2012-04-20 17:50:36