Sök…


Syntax

  • new Regex(pattern); // Skapar en ny instans med ett definierat mönster.
  • Regex.Match(input); // Startar uppslaget och returnerar matchen.
  • Regex.Matches(input); // Startar uppslaget och returnerar en MatchCollection

parametrar

namn detaljer
Mönster string som måste användas för uppslagningen. För mer information: msdn
RegexOptions [Valfritt] De vanliga alternativen här är Singleline och Multiline . De ändrar beteendet hos mönsterelement som punkten (.) Som inte täcker en NewLine (\ n) i Multiline-Mode utan i SingleLine-Mode . Standardbeteende: msdn
Timeout [Valfritt] Där mönster blir mer komplexa kan uppslaget ta mer tid. Detta är den passerade tidsgränsen för sökningen precis som känd från nätverksprogrammering.

Anmärkningar

Behövs använda

using System.Text.RegularExpressions;

Trevligt att ha

  • Du kan testa dina mönster online utan att behöva sammanställa din lösning för att få resultat här: Klicka på mig
  • Regex101 Exempel: Klicka på mig

Speciellt nybörjare tenderar att överdriva sina uppgifter med regex eftersom det känns kraftfullt och på rätt plats för komplexa textbaserade uppslag. Detta är punkten där människor försöker analysera xml-dokument med regex utan att ens fråga sig själva om det kan finnas en redan färdig klass för den här uppgiften som XmlDocument .

Regex borde vara det sista vapnet som väljer komplexitet. Glöm åtminstone inte att försöka leta efter right way innan du skriver ner 20 rader med mönster.

Enkel match

using System.Text.RegularExpressions;

string pattern = ":(.*?):";
string lookup = "--:text in here:--";

// Instanciate your regex object and pass a pattern to it
Regex rgxLookup = new Regex(pattern, RegexOptions.Singleline, TimeSpan.FromSeconds(1));
// Get the match from your regex-object
Match mLookup = rgxLookup.Match(lookup);

// The group-index 0 always covers the full pattern.
// Matches inside parentheses will be accessed through the index 1 and above.
string found = mLookup.Groups[1].Value;

Resultat:

found = "text in here"

Flera matcher

using System.Text.RegularExpressions;

List<string> found = new List<string>();
string pattern = ":(.*?):";
string lookup = "--:text in here:--:another one:-:third one:---!123:fourth:";

// Instanciate your regex object and pass a pattern to it
Regex rgxLookup = new Regex(pattern, RegexOptions.Singleline, TimeSpan.FromSeconds(1));
MatchCollection mLookup = rgxLookup.Matches(lookup);

foreach(Match match in mLookup)
{
    found.Add(match.Groups[1].Value);
}

Resultat:

found = new List<string>() { "text in here", "another one", "third one", "fourth" }


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow