2017-01-22 6 views
0

正規表現を検索していますが、すべての要素を改行なしで置き換えています。文字、数字、ドット '。'、疑問符 '?'壊れていない空間 ''があります。例外を含む正規表現

たとえば、文字列'[email protected]!.''hello world .'になります。 誰かが私にそれをやる方法を私に説明してもらえますか?私は正規表現の仕組みをほとんど知らないので、

ありがとうございました!

+3

どのようなプログラミング言語ですか?正規表現はパターンに過ぎず、置換は言語に依存します。 – Lucero

答えて

1

質問のHTMLタグが付いているので、置き換えを行うにはjavascriptが必要ですか?もしそうなら、これは動作するはずです:

result = subject.replace(/[^\w\d.? ]/g, " "); 

[]「は、以下のいずれかの文字を、しかし^が最初の文字であるとき、選択が否定される\w手段 『を意味する。単語文字』、および\d手段 『の数字を』ので、英語に翻訳し、このパターンのような何か読んでいました:。

語の文字、数字、ドット、疑問符またはノーブレークスペースではないすべての文字を

gパターンは、そのパターンを意味した後、グローバルであり、最初のものだけでなく、すべてのマッチを置き換える必要があります。

正規表現を検索する:あなたは、テキストエディタを使用している場合

+0

'\ d'は既に' \ w'の一部ですが、OPが置き換えたいと思うアンダースコアもそうです。これは、Unicode文字/数字を文字/数字として扱うこともできません。 –

+0

'result = subject.replace(/ [^ \ w。?] | _/g、" ");' – Dummy

0

、あなたはそうのようにそれを行うことができ、単一のスペース

[^a-zA-Z0-9.? ] 

と交換してください。

デモ:https://regex101.com/r/PzbadC/1

[^a-zA-Z0-9.? ] - 否定文字クラスは、a to zA to Z0 to 9.?、およびスペースから文字以外にマッチします。

0

文字、数字、 '。'、疑問符 '?'壊れていない空間 ''があります。

これは正規表現を与える:( |[a-zA-Z0-9.?]+)

しかし、あなたは、あなたが使用する必要があり、これを否定したいので:(?! )[^a-zA-Z0-9.?]+

(! )  : is a negative lookahead, that makes sure we have not   
[^a-zA-Z0-9.?]+ : is a character class that matches 1 or more character that are not in the class. 

var str = 'hello @ world!.'; 
 
str = str.replace(/(?! )[^a-zA-Z0-9.?]+/g, " "); 
 
console.log(str);

関連する問題