2015-06-25 4 views
5

Potrzebuję wyodrębnić szereg istotnych wartości z pliku. Podstawowy wzór dla wartości muszę dopasować wygląda następująco: (?)Zatrzymaj wyrażenie regularne z zakresu obejmującego niepotrzebne treści.

"indicator\..+?"\[true\] 

Niestety, w miejscach, to jest obejmujących całej całkiem sporo treści, aby uzyskać prawdziwy mecz i leniwy kwantyfikator nie jest tak leniwy, jak bym chciał.

Jak zmodyfikować wyżej tak, że spośród następujących:

„indicator.value tutaj” [false] „innych treści”, „więcej innych zawartości” wskaźnik "nie dopasować ten ze względu kropkę brakuje „[true]” indicator.this jest wartością chcę dopasować „[true]

zwracane tylko ta wartość jest:” indicator.this jest wartością chcę dopasowane "[true]

Curre ntly, że cały ciąg jest zwracany przez moje powyższe wyrażenie regularne.

+0

Dzięki John Saunders, pozwoli uniknąć tego w przyszłości. – MidnightThoughtful

Odpowiedz

0

Zamiast tego spróbuj użyć "indicator\.(.*)?"\[true\] i sprawdź, czy to pomaga. Myślę, że leniwy dotyczy tylko operatora *. Niejasno pamiętam, że miałem ten problem lata temu.

+0

Nawet jeśli prawda, brakuje "." – soandos

1

Zakładając przecinki są separator - po prostu uniknąć pasujące na nich:

@"""indicator\.[^,]+?""\[true\]" 
0

można wykorzystać technikę odrzuconych przez odrzucenie wzór nie chcesz. Tak, można mieć coś takiego:

"indicator\..+?"\[false\]|"indicator\.(.+?)"\[true\] 
Discard this pattern --^ Capture this --^ 

Working demo

informacji meczów

MATCH 1 
1. [150-182] `this is the value I want matched`