2011-01-11 3 views
10

RegExの改行やタブ文字などを完全に無視する方法はありますか? たとえば、改行文字とタブ文字は、コンテンツ文字列内の任意の順序で検索できます。RegExの改行とタブを完全に無視する方法は?

(\[CustomToken).*?(\/\]) 

の.NET APIあなたの提案のための

Regex.Matches(string input, string pattern) 

ありがとう:

... [CustomToken \t \r\n Type="User" \t \r\n Property="FirstName" \n /] ... [CT ... 

ザ・

は、私が現在使用している正規表現です。

答えて

17

あなただけの正規表現は、その入力を一致させることをしたい場合は、あなたがする必要があるすべては単一行モードを指定します:

Regex.Matches(input, @"\[CustomToken).*?(/\])", RegexOptions.Singleline); 

ドットメタ文字が正常に改行(\n)以外の任意の文字に一致します。 「ドットマッチオール」または「DOTALL」モードとも呼ばれるシングルラインモードでは、改行も一致させることができます。

+0

..ありがとうございました...それは働いています... –

1

タブ/改行が必要ですか?タブ/改行文字を空の文字に置き換えて削除することができます。

string mystring = "\t\nhi\t\n"; 

string mystring_notabs = mystring.Replace("\t",""); //remove tabs 

mystring = mystring_notabs.Replace("\n",""); //remove newline and copy back to original 
2

正規表現ですべてのタイプの文字を「無視」する方法はありません。あなたは大文字小文字を無視することができますが、それはそれです。

\s+の場合は、空白の種類が予想されます。 \sクラスは、改行、キャリッジリターン、タブ、スペースを含むすべての空白と一致します。これにより、正規表現パターンがもっとよく見えるようになります。

0

私は複数行のXML値に問題がありました。私は説明フィールド内のデータを必要としていました。パースするためにデータベースから正規表現を動的に読み取っていたため、C#コードを変更して単一行オプションを使用したくありませんでした。これは私の問題、特にフロントの(?s)を解決しました:

(?s)(?<=<description>).*(?=<\/description>) 
関連する問題