2011-11-29 10 views
5

正規表現で数値を含む単語をどのように認識できますか? "string1"、 "12inches"、 "log4net"をキャプチャします。しかし、2011年12月11日または18日ではありませんか? Unfortunetly \b[\p{L}\d\p{M}]+\bも数字をつかむ。数値を含む単語

答えて

2

この:

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(); 
    } 

を念頭に置いています。

" 
\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

ありがとうございました。実際には私は少し厳しい問題があります:スペースやハイフンでフレーズを認識し、これを持っている必要があります:(?<= \ b([\ p {L} \ p {M}] + | \ s) s \ p {Pd} \ s] +(?= \ b [\ p {L} \ p {M}] + \ b)。左右の括弧は何らかの単語(ウムラウトを持つことができる)を意味します。今私はあなたも前方参照を接続して参照してください。 – Nickolodeon

+0

@ニコロデオン私はあなたの質問を間違いなく編集しなければならないと思います。適切な入出力サンプルを投稿してください。 – FailedDev

+0

さて、申し訳ありませんが、私は質問を簡素化したいので、ちょうどそれの一部を尋ねました。私は1)Robocop - 3 => Robocop3が必要です。 2)Hello 2 => Hello2 3)Hello world => Helloworld。隣接するものが番号または日付でない場合は、空白またはハイフンbtwnワードを削除します。 – Nickolodeon

0

単語内の文字と数字の両方を一致させたいのですか?これは動作するはずです:\b(\w+\d+|\d+\w+)[\w\d]+\b

関連する問題