文字列の異なる種類の文字列+数字+記号の組み合わせを抽出できる正規表現を作成しようとしています。私は抽出しようとしている文字列の種類は次のとおりです。thisに基づいて文字列から英数字+記号の組み合わせを抽出するRegEx
avs-tldr-02 this is a test
cc+asede this is a test
x86_64 this is a test
this is a test avs-tldr-02 this is a test
this is a test cc+asede this is a test
this is a test x86_64 this is a test
this is a test avs-tldr-02
this is a test cc+asede
this is a test x86_64
:私はテストしていたエッジの例
avs-tldr-02
cc+asede
x86_64
タイプは初めに、ミドルと文章の最後に現れるこれらの文字列です優秀な答えは、私は正規表現で「前後参照」アサーションと周りに手を出してきて、次が出ている:
(?=.*[:alnum:])(?=.*[:punct:])([a-zA-Z0-9_-]+)
はしかし、これは、sの最初の単語にマッチし続けますtring - 私はこれがなぜ起こっているのか理解していますが、私のユースケースのためにこれを調整する方法を失っています。
私が探しているものを得るためにこれを変更するにはどうすればよいですか/この問題に取り組む他の方法はありますか?
あなただけ 'strsplit'と' grep'使用することができます:))便利: 'sapply(strsplit(S、 '\\ S +')、grepを、パターンを= '[[:PUNCT:]]' 、value = TRUE) ' – alistaire