2011-10-18 22 views
0

私はC#で、次の正規表現を持っている: -正規表現、宇宙との一致文字のみ

return Regex.Replace(str, "[^a-zA-Z0-9_.-]+", "", RegexOptions.Compiled); 

有効な文字は、_、、0-0、-Zです。

左側のAND/ORの方にスペースがある場合は、 - に一致するようにします。例えば


舗装-roads =何も(のみ有効な場合)を置き換えるべきではありません(舗装        -roadsが細かすぎる)
舗装 - 道路= -
pavement-を削除する必要があります道路= -          道路= - -
舗装削除する必要があります

+1

有効な文字は、a-z、0-0、_、。、 - ?これらは無効な文字です。この舗道には左に向かってスペースがあります。そして、右に向かってスペースがないので、AND/OR =真となります。しかし、あなたはそれが有効だと言う。私は混乱しています。 – FailedDev

+0

上記の正規表現に舗装道路@ @ $$ @#を渡すと、@ $$ @#は削除されます。 – user730108

+0

これは例をより明確にしません。 – FailedDev

答えて

0

を試してみてください。

+0

元の正規表現 "[^ a-zA-Z0-9 _。] +"を保持し、上記の要件に必要な変更を加えるだけでよいことを言及する必要があります。私は "[^ a-zA-Z0-9 _。(+) - (+)] +"を差し込もうとしましたが、正規表現の範囲を逆順に解析するという例外が投げられました – user730108

0

を削除する必要がありますが、あなただけでダッシュを削除するように見えます後のスペース。これは、スペースで囲まれた任意のダッシュを削除し、手つかずのスペースを維持する必要があり

return Regex.Replace(str, "(+)-(+)", "\\1\\2", RegexOptions.Compiled); 

:これを試してみてください

(?:[^\w. ]|(?:\-(?=)))+ 
関連する問題