2011-11-29 18 views
5

Jak rozpoznać słowo z wyrażeniem regularnym, które może zawierać w nim dane liczbowe. Więc chcę przechwycić "ciąg1", "12 cali", "log4net". Ale nie 12/11/2011 czy 18? Unfortunetly \b[\p{L}\d\p{M}]+\b również pobiera wartości liczbowe.słowo zawierające wartości numeryczne

Odpowiedz

2

to:

Regex regexObj = new Regex(@"\b(?=\S*[a-z])\w+\b", RegexOptions.IgnoreCase); 
    Match matchResults = regexObj.Match(subjectString); 
    while (matchResults.Success) { 
     // matched text: matchResults.Value 
     // match start: matchResults.Index 
     // match length: matchResults.Length 
     matchResults = matchResults.NextMatch(); 
    } 

jest w umyśle.

" 
\b   # Assert position at a word boundary 
(?=   # Assert that the regex below can be matched, starting at this position (positive lookahead) 
    \S   # Match a single character that is a “non-whitespace character” 
     *   # Between zero and unlimited times, as many times as possible, giving back as needed (greedy) 
    [a-z]  # Match a single character in the range between “a” and “z” 
) 
\w   # Match a single character that is a “word character” (letters, digits, etc.) 
    +   # Between one and unlimited times, as many times as possible, giving back as needed (greedy) 
\b   # Assert position at a word boundary 
" 
+0

Dzięki. Właściwie mam nieco trudniejszy problem: muszę rozpoznawać wyrażenia za pomocą spacji lub myślników i mam to: (? <= \ B ([\ p {L} \ p {M}] + | \ s) \ b) [\ s \ p {Pd} \ s] + (? = \ b [\ p {L} \ p {M}] + \ b). Lewy i prawy nawias oznaczają jakieś słowo (może mieć umlauty). Teraz widzę, że dołączyłeś też jakieś odniesienie do przodu. – Nickolodeon

+0

@Nickolodeon Myślę, że powinieneś poddać poprawne pytanie, ponieważ moja odpowiedź na to odpowiada. Opublikuj odpowiednie próbki danych wejściowych/wyjściowych, abyśmy mogli Ci pomóc. – FailedDev

+0

Cóż, przykro mi, chciałem uprościć pytanie, więc spytałem tylko część tego, jak sądzę. Potrzebuję 1) Robocop - 3 => Robocop3. 2) Hello 2 => Hello2 3) Hello world => Helloworld. To usuwa spacje lub łączniki ze słowami, jeśli żadna z sąsiadujących nie jest cyfrą lub datą. – Nickolodeon

0

Chcesz dopasować słowo do liter i cyfr? To powinno działać: \b(\w+\d+|\d+\w+)[\w\d]+\b.

Powiązane problemy