diesem Beispiel Ausschnitt Verwendung:
Der/Zeichen/"_" (Unter/unter-strike) kann/used/in/Variable/Namen/in/many/programing// languages /, während das/-Zeichen/"/" (Schrägstrich/Strich/Solidus) normalerweise nicht erlaubt ist.
... dieser Ausdruck passt eine beliebige Zeichenfolge aus Buchstaben, Zahlen, Unterstrichen oder Apostrophe (ziemlich typische Vorstellung von einem „Wort“ in englischer Sprache), die nicht über einen /
Charakter sowohl vor und nach it - wrapped with a "/"
\b([\w']+)\b(?<=(?<!/)\1|\1(?!/))
... und ist die reinste Form, nur eine Zeichenklasse mit "Wort" Zeichen zu definieren.Es entspricht das Beispiel wie folgt:
Matched Not Matched
------------- -------------
The character
_ used
underscore variable
under in
strike programming
can languages
be character
in stroke
names
many
while
the
slash
solidus
is
typically
not
allowed
Wenn ohne /stroke/
, nicht erwünscht ist, dann ein wenig zu Ende Einschränkung Zugabe wird es erlauben, je nachdem, wie Sie wollten den Beginn eines „nächsten“ Wort definieren:
\b([\w']+)\b(?<=(?<!/)\1|\1(?!/([^\w]))).
ändert (?!/)
-(?!/([^\w]))
, die /something/
erlaubt, wenn es hat einen Buchstaben, eine Zahl oder unmittelbar nachdem sie unterstreichen. Dies würde stroke
von der "Not Matched" auf die "Matched" -Liste, oben, bewegen.
Anmerkung: \w
Streichhölzer Groß- oder Kleinbuchstaben, Zahlen und der Unterstrich
Wenn Sie Ihr Konzept für „Wort“ von oben zu ändern, einfach die Zeichen und Stenografie Zeichenklassen in der enthaltenen austauschen [\w']
Teil des Ausdrucks zu so etwas wie [a-zA-Z']
auszuschließen Ziffern oder [\w'-]
zu Bindestriche enthalten, die under-strike
als Einzelspiel erfassen würde, anstatt zwei separate Begegnungen:
\b([\w'-]+)\b(?<=(?<!/)\1|\1(?!/([^\w])))
WICHTIGE ALTERNATIVE !!!(glaube ich)
ich eines alternativen nur gedacht, um Passende alle Wörter, die nicht mit /
Symbole eingewickelt: einfach verbrauchen alle diese Symbole und Wörter, die sind umgeben in sie (spaltend). Dies hat einige Vorteile: Kein Lookaround bedeutet, dass dies in mehreren Kontexten verwendet werden kann (JavaScript unterstützt kein Lookbehind und einige Varianten von Regex unterstützen überhaupt kein Lookaround), während die Effizienz gesteigert wird. Außerdem bedeutet die Verwendung eines Split-Ausdrucks ein direktes Ergebnis eines String-Arrays:
string input = "The /character/ "_" (underscore/under-strike) can be..."; //etc...
string[] resultsArray = Regex.Split(input, @"([^\w'-]+?(/[\w]+/)?)+");
voila!
TECHNICALLY würde dies "/ World" oder "World /" sowie "/ World /" ... –
@Code Jockey, der OP sagte * nicht ein '/' auf beiden Seiten * , so sollte dies die richtigen Ergebnisse produzieren – Alex
Dies ist die beste Antwort @Alex Vielen Dank! – user1290653