Zum ersten Mal Posting, bitte die Formatierung vergeben. Nicht wirklich ein Programmierer, ich arbeite in C# mit den Revit und AutoCAD APi's. Wichtig zu beachten, da die Revit-API etwas unordentlich ist. Daher kann derselbe Code zu unterschiedlichen Ergebnissen in einer anderen API führen. Also habe ich drei grundlegende String-Muster, wo ich bestimmte Zahlen zurückgeben möchte, je nachdem, was ihr Präfix & Suffix. Sie könnten von anderem Text umgeben sein als dem, was ich zeige, und die tatsächlichen Zahlen und Positionen in der Zeichenfolge können variieren.RegexMuster Zahlen übereinstimmen, unter bestimmten Bedingungen
String 1: (12) # 4x2'-0 @ 6 EF
String 2: (12) # 4 @ 6 EF
String 3: STAGGER 2'- 0, SPCG AT 6 AT 12 SLAB
Der Code ich verwende:
if (LengthAsString.IsMatch(remarkdata) == true)
{
Regex remarklength = new Regex(@"isnertRegexPatternhere");
if (remarklength.IsMatch(remarkdata))
{
remarkdata = remarklength.Replace(remarkdata, "${0}\u0022");
}
}
Remarkdaten sind die Strings von oben, und nach jeder Nummernübereinstimmung werden Zollmarkierungen hinzugefügt.
Die Muster ive getestet und ihre Erträge:
String 1 String 2 String 3
\d+(?!['-]|([(\d+)])) 0,6 4,6 0,6,12
(?<![#])\d+ 12,2,0,6 12,6 2,9,6,12
\d+(?= @)|(?<[email protected])\d+ 0,6 6 no matches
expected results: 0,6 6 0,6,12
so im der Nähe, aber keine Zigarre. Gedanken?
Doppel Edit: Suche nach den Zahlen, die von # nicht vorangehen, noch zwischen(). Ignoriere @ und x, sie können da sein oder nicht.
Ihre Anforderungen sind nicht eindeutig. Bitte formulieren Sie sie mündlich. –
bearbeitet. Ich denke, dass klärt es auf? – Cereston
Zuerst kam ich mit '(?