2012-04-16 75 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