2012-04-16 66 views
0

嗨需要从字符串中提取一个字母。正则表达式提取html块中的一个字母

字符串我已经是HTML的一个很大块,但如果我需要在搜索部分是这样的文字:

Vahvistustunnus M : 

,我需要得到M中的NBSP

所以内谁是最快的正则表达式教师? :)

+0

有些问题......它总是一个“M”还是它可以是任何角色?你想用它做什么?找到它?代替它?验证它是否存在?正则表达式(PCRE,POSIX等)的味道是什么?在什么情况下你打算使用正则表达式(C#,Java,Vim,Notepad ++等)? – Robbie 2012-04-16 14:39:10

+0

它可以是任何角色,我想稍后提取并使用该角色。正则表达式的味道是未知的,因为它应该用在使用钼的UI测试中,我不确定他们是如何进行比赛的(https://www.molyb.org/confluence/display/molyb/Home) – 2012-04-16 14:52:47

+0

好的,谢谢..最后一个问题......是你总是寻找的比赛总是在字面上'Vahvistustunnus'? – Robbie 2012-04-16 14:59:16

回答

1

好吧,根据this page在钼api文档中,结果将所有的小组连接在一起。鉴于你只是想要两个 之间的字符,那么它不足以匹配整个事情,然后退出组。相反,你需要做这样的事情:

(?<=Vahvistustunnus&nbsp;)[a-zA-Z](?=&nbsp;) 

警告 这可能不适合你的工作,因为lookbehinds(?<=pattern)并非在所有正则表达式的口味提供。具体来说,我认为,因为钼是一个Firefox扩展,那么它可能使用ECMA(JavaScript)正则表达式的味道。 ECMA不支持向后看。

如果是这样的话,那么我将不得不要求别人回答你的问题,因为我的正则表达式忍者(业余)技能没有比这更进一步。如果你在JavaScript代码中使用正则表达式,那么围绕这个限制是有办法的,但是根据你的描述,这听起来像你必须解决这个问题,只是一个原始的正则表达式?

+0

我收到一个“意外的例外:无效的量词?”= Vahvistustunnus  )[a-zA-Z](?=  )“。虽然 – 2012-04-16 15:47:44

+0

chrome://molybdenum/content/js/extensions.js,lineNumber - > 579,stack - > RegExp(“(?<= Vahvistustunnus  )[a-zA-Z](?=  ) “)@:0 (”(?<= Vahvistustunnus  )[a-zA-Z](?=  )“,”checkval“)@chrome://molybdenum/content/js/extensions.js:579 (“(?<= Vahvistustunnus  )[a-zA-Z](?=  )”,“checkval”)@chrome://molybdenum/content/selenium/htmlutils.js:60 – 2012-04-16 15:49:09

+0

是的,它必须使用ECMA然后我猜。我会想一想,但暂时我被卡住了。 – Robbie 2012-04-16 15:49:50

1

看起来它使用JavaScript,如果是

var str = "Vahvistustunnus&nbsp;M&nbsp;:"; 
var patt = "Vahvistustunnus&nbsp;([A-Z])&nbsp;:"; 
var result = str.match(patt)[1]; 

应该工作。

+0

正则表达式在JavaScript中正常工作。但是,钼恐怕不会将价值提取到一个变量中。大概应该看看另一个测试框架:)谢谢反正队友! – 2012-04-17 05:55:53