2009-08-01 177 views
0

這裏是演示字符串:如何使用正則表達式提取兩個字符串之間的值?

beforeValueAfter

假定我知道我想要的值之間「之前」和「之後」 我想extact「值」使用正則表達式....

pervious909078375639355544after

Assum e我知道我想要的值是在「pervious90907」和「55544after」之間 我想用「正則表達式」提取「83756393」....

thx提前。

+0

你可以做一個字符串替換的 「pervious90907」 和 「55544after」。你會留下你想要的價值。不需要正則表達式 – ghostdog74 2009-08-02 00:01:10

回答

2

答案取決於兩件事情:

  • 如果你知道確切什麼值由(如果你知道這將是數字,等等,它可以更容易)。如果它可以是任何事情,答案會更難一些。
  • 如果您的系統默認爲貪婪/非理性,它會影響您設置表達式的方式。我會認爲它默認情況下是貪婪的。

如果它可以是任何東西(在將需要切換.*到ungreedy因爲「.*」也匹配「後」:

/before(.*?)After/ 

如果你知道它是個數字:

/before(\d*)After 

如果它可以是任何單詞字符(0-9,AZ,AZ,_):

/before(\w*?)After 
0

試試這個正則表達式:

pervious90907(.*?)55544after 

,將讓你pervious9090755544after之間的最短字符串(注意非貪婪*?量詞)。

+0

如果我想限制結果只是數字,我該怎麼辦? – Tattat 2009-08-01 13:43:24

+0

用`[0-9]`代替`.`,所以`[0-9] *?`。 – Gumbo 2009-08-01 13:44:11

0

正則表達式應該是這樣的:

previous([0-9]*)after 
0
 
bash-3.2$ echo pervious909078375639355544after | perl -ne 'print "$1\n" if /pervious90907(.*)55544after/' 
83756393 
相關問題