この正規表現で実際に何を達成しようとしているのか正確にはわかりませんが、次のコードは、両側に空白がある場合、文字列 'keyword' と一致します。
string resultString = null;
try {
Regex regexObj = new Regex(@"\b(keyword)\b");
resultString = regexObj.Match(subjectString).Value;
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
一般的に次のように説明できます: \b は単語の境界の最初と最後の位置を主張します。この場合、関心のある単語はキーワードであると想定しました。
また、あなたの質問の解釈から、キーワードに続く改行までの一連の文字全体を一致させることに興味があるかもしれないと思いました. その場合、次の正規表現コードはその一致を返します。
string resultString = null;
try {
Regex regexObj = new Regex(@"\bkeyword\b(\w*\s*)$");
resultString = regexObj.Match(subjectString).Value;
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
この正規表現は、両側の \b の理由である最初と最後の単語の境界を見つけるものとして解釈できます。この (\w*\s*) $ の読み取りは、すべての単語 \w文字とスペース文字 \s* が出現する回数だけ一致し、位置を行末 $ に移動します。
この次のコードは、キーワードを含むデータ行全体を読み取ります。キーワードを含まないデータ行は一致しません。
string resultString = null;
try {
Regex regexObj = new Regex("^.*keyword.*$");
resultString = regexObj.Match(subjectString).Value;
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
説明: ^ は文字列の先頭に位置し、.* は改行文字ではない任意の文字に一致し、キーワードが含まれてから .* が続くため、残りの改行以外の文字が含まれ、$ はこの例では行全体になる文字列の末尾に位置します。
今回ではないにしても、将来的には上記が役立つことを願っています。私は常に同じ結果を達成するための別の方法を見つけようとしていますので、建設的な批判があれば投稿してください。
よろしくお願いします、スティーブ