2017-08-04 4 views
0

この文字列を解析する必要があります。RegExを使用して開始パターンと終了パターンを削除する

 \n  \nnabcn  \n  \n 

これより、"nabcn"を抽出する必要があります。空白と"\n"は任意の順序で指定できます。注:"\n"はエスケープ文字ではありません。

"nabcn"は、改行を含む任意の文字を使用できます。私の必要条件は、空白と所望のテキストの前後に"\n"文字列の組み合わせを持たないことです。これは動作しますが、問題はそれだけで「ABC」を見つけたある

(?=[^\s(?:\\n)])((?:(?:.|\n)*)?)(?<=[^\s(?:\\n)]) 

これは私が思いついたものです。

+1

すべての空白と '\ n'を入力から削除しないのはなぜですか? – anubhava

答えて

0

Here's what I came up with

(?:\\n)(\w+) 

これは、あなたが「詳細」の下で、上記Regexrリンクでこれを見ることができ、グループ1のnabcnをキャプチャする必要があります。

最初の文字は\nを探している非キャプチャグループを指定し、2番目の単語は貪欲に単語\wを探します。

+0

この特定の目的のテキストに対してのみ機能します。 nabcnの間にスペースと "\ n"を追加してみてください。たとえば、 - \ n \t \t \ n \ nna \ n bcn \ n \ n これは「na」のみを与えました。それは 'na \ n bcn'を抽出しているはずです – yuva

0

これは動作します:

(n)(?:\s|\\n)*(a)(?:\s|\\n)*(b)(?:\s|\\n)*(c)(?:\s|\\n)*(n) 

テスト:

\n  \nnabcn  \n  \n 

https://regex101.com/r/SPH5mI/1

 \n  \n\n n\n\n\n\nab  c\n\n\n\nn  \n  \n 

https://regex101.com/r/ezUGes/1

それがGRとして多くを作成したよう"nabcn"(what does that word mean anyway?)に文字があるので、単語を検索するには単にグループ$1$2$3$4$5を取得してください。

+0

あなたの素晴らしい仕事をありがとう。しかし、私の質問で言及したことを覚えておいてください - "nabcn"は改行を含む文字を持つことができます。あなたの解決策は ' \ n \ nabkcn \ n \ n'で失敗します。それだけではない 'nabcn'。すべての空白と "\ n"を開始と終了から削除した後、文字列は数字、記号、単語、エスケープ文字、単純に何かを持つことができます。 – yuva

+0

私はあなたの答えにメモを逃したことを謝罪します。私は "nabcn"を特に既知の文字列にすることはできません。何でもかまいません。私は空白と "\ n"文字列をその先頭と最後から削除したいだけです。 – yuva

関連する問題