2012-04-20 65 views
2

這是一個包含公式和生物代碼的巨大文件中的樣本。有些線路開始與以下字符:如何編寫這個正則表達式?

Sheep"-head`ed, // followed by some normal words 
Mon`o*car*bon"ic, // followed by some normal words 
mon`o*car"di*an, // followed by some normal words 
Pol`y*chro"mate, // followed by some normal words 
sheep"cot`,  // followed by some normal words 
baad, // followed by some normal words 

我在正則表達式新。現在我正在嘗試使用TPerlRegEx(a wrapper of PCRE library)。我需要提取:

Sheep"-head`ed, 
Mon`o*car*bon"ic, 
mon`o*car"di*an, 
Pol`y*chro"mate, 
sheep"cot`,  
baad, 

你能幫我寫一個正則表達式嗎?

非常感謝。

編輯:

謝謝大家的幫助。如果一個正常的是他們之間:

Sheep"-head`ed, // followed by some normal words 
Mon`o*car*bon"ic, // followed by some normal words 
New test, //I do not want two or more than two words that end with comma. 
mon`o*car"di*an, // followed by some normal words 
Pol`y*chro"mate, // followed by some normal words 
sheep"cot`,  // followed by some normal words 
baad, // I want this one word that ends with comma 

我還是想:

Sheep"-head`ed, 
Mon`o*car*bon"ic, 
mon`o*car"di*an, 
Pol`y*chro"mate, 
sheep"cot`,  
baad, // I want this ONE word that ends with comma. 

再次感謝您。

+0

爲什麼你需要一個正則表達式?爲什麼不把每行都分割成'/ \ s + /'? – 2012-04-20 14:49:41

+0

是你的例子中的特殊字符實際上是你的字符串,還是他們嘗試正則表達式的語法? – Kip 2012-04-20 14:56:03

+0

@Kip謝謝,他們是真正的樣本。 – Warren 2012-04-20 14:57:51

回答

3

的原正則表達式是^[^,]+,正則表達式在Perl:/^[^,]+,/

  • ^開始行
  • [^ ,]+的匹配,而許多非逗號,非空格作爲可能的匹配。
  • ,匹配的逗號
+0

非常感謝。你太快了。如果在它們之間存在具有2個或多於2個單詞的正常線。怎麼做?請參閱編輯。我需要一個單詞加逗號和一個包含',*,「加逗號的單詞,請參閱編輯,再次感謝。 – Warren 2012-04-20 15:28:32

+0

新的正則表達式有一個空格,像這樣:'/^[^,] +,/ ' – 2012-04-20 15:33:12

+0

太棒了。再次感謝你。 – Warren 2012-04-20 15:37:40

1

要匹配與給定值開始的行,正則表達式是:

/^startswith/ 

你將不得不逃避特殊字符。例如:

/^Sheep\"\-head\`ed,/ 

(我永遠記得到底哪些字符需要進行轉義,但一般而言,您可以逃脫,即使它不需要任何非字母字符。)

對於一個正則表達式來匹配你的任何例子,你可以用|像這樣一起or他們:

/^(Sheep\"\-head\`ed,|Mon\`o\*car\*bon\"ic,|...)/ 
+0

謝謝你讓我更多地瞭解正則表達式。但我不能分裂答案。 – Warren 2012-04-20 15:40:21

+0

@Warren:但你可以* upvote *多於一個答案... :) – Kip 2012-04-20 20:54:02