Skip to content
Tiantan
Articles

正規表現の文字列一致に相当するものはありますか?

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?

コメント

  • いくつかのランダムなコメント:(i)string-matchはすでに正規表現を使用しています(ii)大文字と小文字を区別する必要がある場合はcase-fold-searchを使用して呼び出しをゼロにします(iii)looking-atポイント(iv)でテキストを照合するには、point<の代わりにregion-beginningとregion-endを使用できます。 / div>およびmark後者が前者の前にある場合(use-region-pがnilでないことを確認するためのボーナスポイント)
  • @YoungFrom項目(i)は回答として適格だと思います。
  • C-h f が教えてくれます。

回答

回答のために:

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を呼び出すサンプルスニペットを表示することをお勧めします。

Written by admin

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

最近の投稿

  • 共振ダイポールを備えたバランの使用
  • “できない”と“できない? [重複]
  • JFKでは国内線のエアサイドターミナル間を移動できますか?
  • “深く感謝します”または“深く感謝します”
  • '抽象的なアイデア'とはどういう意味ですか? [クローズ]

アーカイブ

  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

Back to top