正規表現の文字列一致に相当するものはありますか?
On 2月 17, 2021 by admin地域を正規表現と比較することを除いて、このようなものを書きたいと思います。
(if (string-match (buffer-substring-no-properties (point) (mark)) "foo") (bar))
このように使用できる正規表現の文字列一致に相当するものはありますか
(if (regexp-match (buffer-substring-no-properties (point) (mark)) "^[A-Z]") (bar))
選択した領域が次の場合にtrueを返すように、 「Apple」と「apple」の場合はnil?
コメント
回答
回答のために:
string-match
は正規表現で使用するためのものです。
(string-match REGEXP STRING &オプションのSTART)
STRINGのREGEXPの最初の一致の開始のインデックスを返すか、nilを返します。 「case-fold-search」がnil以外の場合、マッチングは大文字と小文字を区別しません。 3番目の引数STARTがnil以外の場合は、STRINGのそのインデックスから検索を開始します。一致を超えた最初の文字のインデックスについては、(match-end 0)を実行します。 match-endおよび match-beginningは、パターン内の括弧構造に一致する部分文字列のインデックスも提供します。
関数 match-stringを使用して、括弧構造に一致する部分文字列を抽出できます。 REGEXPで。
ここにいくつかの例があります
(string-match "\\(dog\\|cat\\)" "There is a dog.") ;; => 11 (string-match "\\(dog\\|cat\\)" "There are two cats here." 0) ;; => 14 (string-match "\\(dog\\|cat\\)" "There are two cats here." 15) ;; => nil (string-match "\\(dog\\|cat\\)" "There are horses.") ;; => nil
string-match
を使用した後にmatch-data
を使用する予定がない場合は、 match-data
を変更しないことを除いて、string-match
と同じように機能するstring-match-p
を使用することをお勧めします。実行時。
他の人が言っているように、あなたの場合はlooking-at
の方がおそらく良い選択でしょう。
(REGEXPを見る)
ポイントの後のテキストが正規表現REGEXPと一致する場合はtを返します。この関数は、「match-beginning」、「match-end」、および「match-data」がアクセスする一致データを変更します。一致データを保存する場合は、保存して復元します。
コメント
- OPが引数の順序を間違えたため、
string-match
を呼び出すサンプルスニペットを表示することをお勧めします。
string-match
はすでに正規表現を使用しています(ii)大文字と小文字を区別する必要がある場合はcase-fold-search
を使用して呼び出しをゼロにします(iii)looking-at
ポイント(iv)でテキストを照合するには、point
<の代わりにregion-beginning
とregion-end
を使用できます。 / div>およびmark
後者が前者の前にある場合(use-region-p
がnilでないことを確認するためのボーナスポイント)C-h f
が教えてくれます。