2017-04-12 1 views
1
String "Ap: SV, Classe Store Stat: AC," 

Ich benutze negative Lookarounds ist so i AC nach dem String Stat greifen kann:Wie kann ich nicht Teil einer Zeichenfolge in der erfassten Gruppe von regex

(?!Stat:)(\s\D\D), 

Aber es Erfaßt

  1. SV,
  2. AC,

ich will nur erfassen nur AC ,. Wie mache ich das. I "m ziemlich ein Anfänger, wenn es um regex kommt

~ W

+0

Versuchen Sie ['(? <= Stat: \ s) \ D \ D,'] (https://regex101.com/r/SHB3tj/1). Was ist dein Regex-Geschmack? BTW, '\ D' stimmt mit jedem Zeichen überein, das keine Ziffer ist, vielleicht wird' [a-zA-Z] {2} 'anstelle von' \ D \ D' besser. –

+0

Es hat funktioniert. Ich verwende derzeit csharp. Was bedeutet das? <=. Ich benutzte http://www.regextester.com/, um meine Regex zu testen, aber ich erinnere mich daran, zu sehen? <= Aber es funktionierte nicht für diese Seite, aber als ich es in meinem Code getestet habe, funktionierte es. – skinnyWill

+0

Ich vergaß Dank Wiktor Stribizew – skinnyWill

Antwort

1

In .NET Regex, können Sie unendlich Lookbehind verwenden, oder die Aufnahme zu bekommen, was Sie brauchen.

var m = Regex.Match(s, @"\bStat:\s*(\D\D,)"); 
if (m.Success) 
{ 
    Console.WriteLine(m.Groups[1].Value); 
} 

Siehe this regex demo .

var m = Regex.Match(s, @"(?<=\bStat:\s*)\D\D,"); 
if (m.Success) 
{ 
    Console.WriteLine(m.Value); 
} 
:

wie diese zu erhalten, um den Wert in m.Value gerade, ein Lookbehind könnte verwendet

Siehe regex demo.

Capturing sieht im Allgemeinen effizienter und vielseitiger aus.

Hinweis: \b ist eine Wortgrenze, wenn Sie nicht darauf achten, Stats als ganzes Wort zu entsprechen, entfernen Sie es.

Verwandte Themen