我不确定你真的想用这个正则表达式来完成什么,但是下面的代码将匹配字符串“关键字”,当它的两边都有空格时:
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
}
解释:字符串开头的 ^ 位置,.* 匹配任何不是换行符的字符,然后包含关键字,后跟 .*,因此包含剩余的非换行符,$ 断言位于字符串末尾的位置,在此示例中将是整行。
我希望以上内容对您有所帮助,如果不是这次,也许将来会有所帮助。我一直在尝试发现替代做法以达到相同的结果,因此,如果您有任何建设性的批评,请发表。
最好的祝愿,史蒂夫