0

正規表現を使用して、特定の文字列の次の行にあるテキストを検索する方法を探しています。
次のテキストがあるとします。

Note:
Just some text on this line

Some more text here.

「この行のテキストだけ」というテキストを取得したいだけです。
他のテキストがどうなるか正確にはわからないので、'Note:' と 'Some more text here' の間で検索できません。
私が知っているのは、必要なテキストが「メモ:」の次の行にあるということだけです。
どうすればこれを行うことができますか?

乾杯、CJ

4

3 に答える 3

2

文字列を 1 行ずつ下に移動し、正規表現が一致したら、次の行を取ります

string str;
// if you're not reading from a file, String.Split('\n'), can help you
using (StreamReader sr = new StreamReader("doc.txt"))
{
    while ((str = sr.ReadLine()) != null)
    {
        if (str.Trim() == "Note:") // you may also use a regex here if applicable
        {
            str = sr.ReadLine();
            break;
        }
    }
}

Console.WriteLine(str);
于 2013-03-20T15:50:39.167 に答える
1

これは複数行の正規表現で実行できますが、本当に実行しますか? 行ごとの処理の場合のように聞こえます。

正規表現は次のようになります。

new Regex(@"Note:$^(?<capture>.*)$", RegexOptions.MultiLine);

ただし、 in ではなくのみ一致するため、最初$に a\r?$または aにする必要がある場合があります。\s*$$\n\r\r\n

「この行のテキストだけ」は、capture という名前のグループに含まれます。\rの処理のために、これから末尾を削除する必要がある場合もあります$

于 2013-03-20T15:52:46.827 に答える
0

あなたはこれを行うことができます

(?<=Note:(\r?\n)).*?(?=(\r?\n)|$)
---------------- --- ------------
      |           |        |->lookahead for \r\n or end of string
      |           |->Gotcha
      |->lookbehind for note followed by \r\n. \r is optional in some cases

だから、それはこのようになります

string nextLine=Regex.Match(input,regex,RegexOptions.Singline | RegexOptions.IgnoreCase ).Value;
于 2013-03-20T16:01:28.897 に答える