首先,我想我将首先询问构建正则表达式字符串的一些好工具或参考是什么?我通常会在网上找到它们,但我想更多地了解它们。
现在回答我原来的问题:什么是正则表达式找到一个完整的字符串,或找到一个包含该字符串的行。字符串是:
** Start of
答案 0 :(得分:6)
您正在寻找的正则表达式是:\*\* Start of.*
因为C#有自己的转义字符,所以你可能想把它放在像@"\*\* Start of.*"
这样的逐字字符串中。
帮助您构建,学习和理解正则表达式的最佳工具是RegexBuddy。它可以帮助您查看表达式的含义,并通过直观的图形UI进行测试。
有关正则表达式(跨不同语言)的信息的最完整资源是http://www.regular-expressions.info/。如果您希望了解特定的正则表达式实现,您可能最好阅读特定于实现的文档/规范。对于.NET,一个好的起点是Regex documentation at MSDN您还可以使用http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx上的免费工具在线快速测试.NET正则表达式
我还想指出,我同意@ziesemer使用IndexOf
或StartsWith
方法可能是这种简单模式的更好解决方案。
答案 1 :(得分:2)
我认为你正在使用错误的工具来完成工作。正则表达式最适合查找模式。您似乎只是想进行简单的搜索 - 为此使用适当的API(例如IndexOf
)。
否则,您只需要转义星号 - 这是正则表达式中的特殊字符 - 意味着“匹配0或更多”:
\*\* Start of
答案 2 :(得分:0)
要学习正则表达式,您可以查看Regular Expression Basic Syntax Reference上的www.regular-expressions.info以及A Gentle Introduction: The Basics
关于要查找的字符串,如果只想要a到z的字符,那么我认为你应该写为
^[a-zA-Z]$
这将占用小的和大写的a到z字符。
^\*\* Start of(.*?)$
分割明细
\*
,考虑星号Start of
,完全比较此字符串 (.*?)
,对该单行采取任何措施
^\*\* Start of(.*?)(([\n]*(.*?)){19})*$
分割明细
\*
,考虑星号Start of
,完全比较此字符串(.*?)(([\n]*(.*?)){19})*
,采取任何限制,但最多限制19行答案 3 :(得分:0)
虽然信息非常丰富,但没有一个答案可以为您的具体问题提供正确的正则表达式。这是:
string regexPattern = @"^.*?\*{2} Start of.*?$";
请注意,搜索匹配时必须指定multiline
选项。
您可以看到结果 here 。
以下是对模式的解释:
^.*?\*{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) «$»