1

首先,我想我将首先询问构建正则表达式字符串的一些好的工具或参考资料是什么?我通常在网上找到它们,但我很想多了解它们。

现在回到我最初的问题:查找完整字符串或查找包含该字符串的行的正则表达式是什么。字符串是:

** Start of
4

4 回答 4

6

您正在寻找的正则表达式是:\*\* Start of.*

因为 C# 有自己的转义字符,您可能希望将其放在逐字字符串中,例如@"\*\* Start of.*".

帮助您构建、学习和理解正则表达式的最佳工具是RegexBuddy。它可以帮助您查看表达式的含义,并通过直观的图形 UI 对其进行测试。 它可以帮助您查看表达式的含义,并通过直观的图形 UI 对其进行测试

有关正则表达式(跨不同语言)的最完整信息资源是http://www.regular-expressions.info/。如果您想了解特定的正则表达式实现,您最好阅读特定于实现的文档/规范。对于 .NET,一个很好的起点是MSDN 上的 Regex 文档您还可以使用http://derekslager.com/blog/posts/2007/09/a-better 上提供的免费工具在线快速测试 .NET 正则表达式-dotnet-正则表达式-tester.ashx

我还想指出,我同意@ziesemer 的观点,即对于这种简单的模式,使用IndexOforStartsWith方法可能是更好的解决方案。

于 2012-09-08T04:46:33.847 回答
2

我认为你使用了错误的工具来完成这项工作。正则表达式最适合查找模式。看来您只是想做一个简单的搜索 -IndexOf为此使用适当的 API(例如)。

否则,您只需要转义星号 - 它们是正则表达式中的特殊字符 - 表示“匹配 0 个或多个”:

\*\* Start of
于 2012-09-08T04:45:31.593 回答
0

要学习正则表达式,您可以查看www.regular-expressions.info上的正则表达式基本语法参考以及另外一个温和的介绍:基础知识

关于要查找的字符串是否只需要从 a 到 z 的字符,那么我认为您应该写为

^[a-zA-Z]$

这将需要小而大写的 a 到 z 字符。

更新

^\*\* Start of(.*?)$

拆分细节

  • \*, 考虑星号
  • Start of, 准确比较这个字符串
  • (.*?), 在那一行上取任何东西

    ^\*\* Start of(.*?)(([\n]*(.*?)){19})*$

拆分细节

  • \*, 考虑星号
  • Start of, 准确比较这个字符串
  • (.*?)(([\n]*(.*?)){19})*, 取任何东西,但不超过 19 行
于 2012-09-08T04:51:37.517 回答
0

虽然信息量很大,但没有一个答案为您的特定问题提供正确的正则表达式。这里是:

string regexPattern = @"^.*?\*{2} Start of.*?$";

请注意,您必须multiline在搜索匹配项时指定选项。

你可以在这里看到结果。

这是模式的解释:

^.*?\*{2} Start of.*?$

Options: ^ and $ match at line breaks

Assert position at the beginning of a line (at beginning of the string or after a line break character) «^»
Match any single character that is not a line break character «.*?»
    Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
Match the character “*” literally «\*{2}»
    Exactly 2 times «{2}»
Match the characters “ Start of” literally « Start of»
Match any single character that is not a line break character «.*?»
    Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
Assert position at the end of a line (at the end of the string or before a line break character) «$»
于 2012-09-08T08:30:35.373 回答