0

「 」のすべてのインスタンスを検索して取得する必要があります# XXX YYY。別の例としては、「# LOL foo」または「# HAHALOL omgpls」があります (私の想像力の欠如は残念です :P. 検索ですべてのヒットのテキスト ファイルのインデックスを取得できればこれに基づいてそれはいいでしょう。

テキストファイルで。正規表現で数回試しましたが、うまくいかないようです。

「#」は常にあり、次にスペースがあり、次に長さが不明の文字列がありますが、通常は 5 文字未満です。次に、再びスペースがあり、長さが不明な同じ文字列が再びあります。

4

2 に答える 2

3

この正規表現を試してください

#\s\w+\s\w+

bool ok = System.Text.RegularExpressions.Regex.IsMatch("# XXX YYY", @"#\s\w+\s\w+");

\s  --> space
\w  --> any word character
+   --> variable length

クイックリファレンスはこちら

編集:

MatchCollection matches = Regex.Matches("abcde # XXX YYY  abcde", @"#\s\w+\s\w+");
foreach(Match  m in matches)
{
    string value = m.Value;
    int indexOfInput = m.Index;
}
于 2012-04-26T06:54:35.960 に答える
1

文中の2、3語だけを話している場合は、次のようなパターンに一致させる必要があります。

"#aaaa"
"#aa aa"
"#aa      aaaaa" 

正しい正規表現は次のようになっている必要があります。

"#\w+ ?\s?\w+"

これは一致します:

\w+ - 1-N words
?\s - presence or absence of a space after first word
?\w+ - presence or absence of a second word with 1-N number of characters
于 2012-04-26T07:14:05.963 に答える