2016-05-04 75 views
0

文字の前に "<"という記号がある文字列を除くすべてのスラッシュを見つける必要があります。Regex:すべてのスラッシュを見つけてください。 "</"

/(?!<)(\/)/g私が望むように動作しません。

編集:私はJavascriptを使用していることを忘れていました。提案された解決策はphpのためにあるようです。

+0

これは、HTMLまたはXML解析の質問のようです。それは...ですか?もしそうなら、答えは "正規表現を使わない"です。参照:[XHTMLを正規表現で解析する](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Sobrique

+0

どのプログラミング言語を使用していますか? –

+0

私はJavascriptを使用しています。 – dtrinh

答えて

0
/(?<!<)([\/\\])/g 

スラッシュがキャプチャされる文字を自然に指示しないので、\は「エスケープリテラル」を実行しています。

あなたは否定的な先取り主張をしていました。私はそれを否定的な裏付け主張に変えました。

このツール:https://regex101.com/は私が正規表現を理解するのを助けました。それはあなたが探しているものをあなたに伝えます。

0

あなたはnegative lookbehind、すなわちを使用することができます。:

/(?<!<\/) 

正規表現の説明:

/(?<!<\/) 

Match the character “/” literally «/» 
Assert that it is impossible to match the regex below with the match ending at this position (negative lookbehind) «(?<!<\/)» 
    Match the character “<” literally «<» 
    Match the character “/” literally «\/» 

Regex101 Demo

0

視覚的に、あなたの心はだまされました。

この(?!<)は否定後読みのように見えますが、それは実際には負の
先読みです。

この(?<!<)はネガティブなビヘイビアです。

アサーションを最初に正規表現に入れると、正規表現の速度が遅くなることに注意してください。
10〜30回。

パフォーマンスを向上させるために、リテラルの後ろにlookbehindを入れてください。/(\/)(?<!<\/)/

関連する問題