2017-12-15 35 views
0

で最初の数字を維持するために正規表現を変更する方法についてのアドバイスを必要としています。この正規表現私は以下の結果を得ている([^\s\.\)\d\-,\>](\s{0,3}[^\s]+)*)使用
:ここは、私は次の文字列を持っているキャプチャグループ

Match 1 
Full match 6-25 'General Information' 
Group 1. 6-25 'General Information' 
Group 2. 13-25 ' Information' 
Match 2 
Full match 39-56 'rd Party Software' 
Group 1. 39-56 'rd Party Software' 
Group 2. 47-56 ' Software` 

my regex demo fiddleへのリンクです。

しかし、私は2回目の試合で3番手を欠いています。 「3rd Party Software」の代わりに「rd Party Software」を入手しています。どのようにその数字を保持するための任意の提案?

ありがとうございました。あなたが使用している場合

+0

'[^ \ S \ \)\ D \ - 、\ >]ので3が捕捉されていない' '除外\ D '(十進数)。私はこの正規表現があなたが思うことはしないと思う。例えば、「General」の「G」が小文字の「g」であった場合、以前に参照された文字セットも 'g 'を除外しているため除外されます。それは文字列ではなく、個々の文字列を除外しています。 – Galen

+0

あなたのマッチ&キャプチャグループにはどんな結果が必要ですか? – Marathon55

+0

@kfed '(?<= \ d > \ s)[\ w \ s] +(?= \ s {6} | \ r * \ n)'? – wp78de

答えて

0

[^&gt;]あなたはどんな文字に一致するが、&は、[^...]としてgt;は否定文字クラスの構造です。

あなたは何が必要桁(S)と&gt;部分と一致して、一致するとキャプチャことがあります。

/\d+&gt;\s*([^\s.),-]+\s{0,3}((?:\s{0,3}\S+)*))/ 

regex demo

詳細

  • を参照してください。 \d+ - 1桁
  • &gt; - サブ
  • \s* - 0+空白文字
  • ([^\s.),-]+\s{0,3}((?:\s{0,3}\S+)*)) - グループ1:
    • [^\s.),-]+ - 任意の文字が、空白、.),-
    • \s{0,3}
    • - 0〜 3回の空白文字の出現
    • ((?:\s{0,3}\S+)*) - 0以上連続して一致するグループ2 1+非空白文字 - 空白文字の3つの出現
    • \S+から0 -
      • \s{0,3}のurrences。
関連する問題