1
^.
は最初の文字で、(\d+)(?!.*\d)
は最後の数字です。私はこれらの間に|
を使用しようとしましたが、2番目の文字のコードを検索しようとしましたが、成功しませんでした。正規表現:最初の文字と最後の数字を除くすべてを削除します
これはR
です。
例を見てみましょう:私は
sub([regex here], "", 'ABCD some random words and spaces 1234')
^.
は最初の文字で、(\d+)(?!.*\d)
は最後の数字です。私はこれらの間に|
を使用しようとしましたが、2番目の文字のコードを検索しようとしましたが、成功しませんでした。正規表現:最初の文字と最後の数字を除くすべてを削除します
これはR
です。
例を見てみましょう:私は
sub([regex here], "", 'ABCD some random words and spaces 1234')
を行うときに^.|(\d+)(?!.*\d)
を使用した場合
'ABCD some random words and spaces 1234'
は、パターンが出力のみ'A4'
最初の文字と一致し、sub
でそれを削除し、削除しますでしょう必要があります最初の文字と最後の1桁の数字が置換パターンに逆参照なしでgsub
で使用されている場合。 this pattern demoを参照してください。
あなたは
sub("^(.).*(\\d).*$", "\\1\\2", "ABCD some random words and spaces 1234")
を使用することができますがR demoとregex demoを参照してください。
このTRE正規表現パターンが一致します。
^
を - 文字列の先頭(.)
- グループ1は、任意の文字.*
キャプチャ - 0+最後までできるだけ多くの任意の文字を...(\\d)
- グループ2の数字のキャプチャ.*
- 残りの文字列$
- 文字列の最後。\\1\\2
置換パターンは、グループ1とグループ2でキャプチャした値を結果に戻します。
ありがとうございます。副次的な質問として、人々はRegexをどのように学びますか?オンラインでは多額のリソースがあるようですが、取り込むことは大変です。 – Clarinetist
問題があります。 Base Rでは、 'perl = TRUE'引数を使用しない場合、TRE正規表現(' grep'、 'sub'など)の中から選択できます。あなたがそれを使うなら、あなたはPCRE正規表現のフレーバーを使わなければなりません。 stringr/stringiなどでは、ICU正規表現について読む必要があります。 Web上には多くのリソースがありますが、「公式」ページがあります。 [* PCRE - Perl互換正規表現*](http://www.pcre.org)、[* ICU *](http://userguide.icu-project.org/strings/regexp)、[* TRE *] (http://laurikari.net/tre/documentation/regex-syntax/)。 –