私は正規表現を使うのが初めてで、単語を除外することは可能かどうか疑問に思いました。私は次のデータのリストを持っています:
cat.text"
cat.doc"
dog.txt"
dog.text"
frog.txt"
dog.text"
dog. text"
cat. text"
cat. text "
このデータから、私は取得したい.text"
(または. text "
、あるいは.text "
、など)部分が、私にはしたくない.text"
含まれている任意の項目からcat
。これまでのところ、私はすべてを取得すること.text"
ができますが、cat
単語でそれらを除外する方法はわかりません。私はこれまでに持っています\.\s*text\s*"
、そしてそれは得ます
cat.text" <--
cat.doc"
dog.txt"
dog.text" <--
frog.txt"
dog.text" <--
dog. text" <--
cat. text" <--
cat. text " <--
何か助けはありますか?ありがとう!
すべての.text "を取得できますが、" cat "という単語を含むものを除外する方法がわかりません。
次の正規表現を使用できます。
/^(?!cat).*\.\s*text/m
大文字と小文字を区別しないようにする場合i
は、末尾に大文字と小文字を区別しないフラグを追加できます(例:)mi
。
説明:
^ // assert position at start of a line (with the multiline 'm' flag)
(?!cat) // negative lookahead to prevent matching if line starts with cat
.* // match any number of characters excluding linebreak characters
\. // match "." literally
\s* // match any number of whitespace characters
text // match "text" literally
// flags:
// "m" - multiline, matches on a per line basis)
編集:サフィックスタグを終了引用符と一致させたい場合は、次を使用できます。
/^(?!cat).*(\.\s*text\s*\")/m
Regex101の右側にある試合情報に注目してください。()
文字列/正規表現方法の適切な使用を想定し、出力する一致を取り込みます。
以下を使用してキャプチャされたグループを抽出する方法の例String.prototype.match
:
var strArr = [ 'cat.text"',
'cat.doc"',
'dog.txt"',
'dog.text"',
'frog.txt"',
'dog.text"',
'dog. text"',
'cat. text"',
'cat. text "',
'dogtext',
'textexttext'];
var re = /^(?!cat).*(\.\s*text\s*\")/mi;
var testDiv = document.querySelector('.testString');
var resultDiv = document.querySelector('.resultString');
strArr.forEach(function(str) {
testDiv.insertAdjacentHTML('beforeend', str + '<br>');
if (str.match(re))
resultDiv.insertAdjacentHTML('beforeend', str.match(re)[1] + '<br>');
else resultDiv.insertAdjacentHTML('beforeend', '<br>');
});
.testString {
display: inline-block;
}
.resultString {
display: inline-block;
position: relative;
left: 10%;
}
<div class='testString'></div>
<div class='resultString'></div>
キャプチャしたグループが必要なg
ときに使用するときにフラグを削除しましたstring.prototype.match
。g
フラグを使用すると、一致文字列全体が返されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加