2017-10-27 7 views
1

私は文字列の先頭から検索したいと思っていますが、どのように描けるのかわかりません。初めから貪欲でない検索方法

文字列が>plaplapla>plaplapla(321)だった場合、私は、最初の文字>の最後の発生から始まる正規表現/>.+?\(\d.\)/でテキストを取得したいです。

たとえば、テキストが>fir5t W0rd$ > $ec0nd here(2) >third here()の場合、抽出するテキストは> $ec0nd here(2)です。

レキシックス/>.+?\(\d.\)/を使用しようとしましたが、> $ec0nd here(2)の代わりに>fir5t W0rd$ > $ec0nd here(2)と表示されます。

どのようにして '>'文字の最後の位置から開始するようにレキシックスを変更できますか?

+0

一度最初の '<'一致している、 '。*?'最初の '('、桁まで一致した(怠惰が)、 ')'。したがって、 '<'記号にマッチすることができます。 –

答えて

2

あなたの文字列ではなく.*?怠惰なドットパターンの[^>]否定文字クラス>区切ら使用のようですので:

/>[^>]+\(\d+\)/ 

regex demoを参照してください。 />[^>]+?\(\d+\)/も同様に動作しますが、>の後の最初の(<DIGITS>)部分文字列と一致します。 this regexおよびthe one aboveを参照してください。

詳細

  • > - リテラル(
  • \d+ - - 一つ以上のリテラル>
  • [^>]+から>として多く\(
  • できるだけ以外の1またはそれ以上の文字数字
  • \) - a )シンボル。
1

これを試してください:あなたはそれの2番目のインスタンスを取得しますので、あなたの正規表現は、文字>をキャプチャしません

/>[^>]+?\(\d\)/ 

この方法です。

文字列は左から右に処理されているので起こり

Regex 101 Link

+0

\ d + ........... –

関連する問題