2

我正在尝试找到一种匹配以下测试字符串的方法:

token = '1866FB352F4DF76BCB92C3482DB7D7B4F562';

我要返回的数据是...

1866FB352F4DF76BCB92C3482DB7D7B4F562

我尝试了以下方法,我的关闭是这样的,但它包括最后的单引号:

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

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

'([^']+)'

有没有人想对这个进行一番尝试?

更新:在查看了我需要解析的内容后,我在 html 中的表单区域中找到了相同的值,看起来可能更容易抓取:

name="token" value="482CD1FE037F68D5A36F4C961A6D57D9"

同样,我只需要 value="*" 中的内容

但是,正则表达式必须解析整个 html 源代码,所以我假设我需要搜索 name="toke" value= 但不将其包含在结果集中。

4

1 回答 1

1

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

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

如果字母数字单词被单引号包围,则它匹配一个字母数字单词,而不使这些引号成为实际匹配的一部分。如果您只想匹配十六进制数字,请使用

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

编辑:

由于您现在添加了您正在使用 JMeter,并且由于我无法理解的原因(因为 Java 本身确实支持它),JMeter 不支持后向断言,您可能会像这样作弊:

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

只检查一个完整的十六进制数字是否出现在'字符之前。它不会检查是否存在开场报价,但很可能这无关紧要。

于 2012-04-20T17:16:50.400 回答