我正在编写一些正则表达式代码。我怎样才能搜索第一个实例 字符串出现在文本中。例如,如果我想搜索第一个 文本中出现的数字(我不关心其他数字,我不想要 他们突出显示),如何在正则表达式中指定?
我正在编写原始的正则表达式代码并在在线测试人员上测试它们,例如 Rubular.com和regexpal.com。
答案 0 :(得分:1)
默认情况下,正则表达式的工作原理如下:您通常必须提供全局选项或使用特定函数来查找所有匹配项。
因此,如果您使用正则表达式\d+
查找一个或多个数字,则正则表达式引擎只匹配第一组数字(第一个数字)。
请注意,如果您使用的是在线工具或文本编辑器而不是编程语言,则可能不是这种情况,因此如果这样做无效,请指明您执行正则表达式搜索的方式。
您可以使用以下正则表达式获取第一个捕获组中的第一个数字,但不匹配任何其他数字:
^[^\d]*(\d+)
说明:
^ # start of string
[^\d]* # match zero or more non-digit characters
(\d+) # match one or more digits and place them in the first capture group
答案 1 :(得分:0)
Most Regex tools, which use regex-directed engines, always return the leftmost match.
正则表达式引擎总是返回最左边的匹配因为 引擎“急于”报告比赛。引擎永远不会进行 超越这一点,看看是否有任何“更好”的比赛。首先 匹配被认为是足够好的。
但是使用正则表达式引擎的工具(如Notepad ++,EditPad以及数百万其他人)已配置它应突出显示所有匹配项。 (这对于文本编辑器来说很有意义)(对于大多数在线正则表达式测试人员来说也是如此)。
要解决您的问题,如果您使用的是像.NET Regex库这样的Regex库,则可以使用Regex.Match来获得第一个匹配的事件。
例如,在C#中:
string regexPattern = "\d";
string inputText = @"Ka3jf7we8ewdv";
Regex r = new Regex(regexPattern);
Match m = r.Match(inputText);
Console.WriteLine(m.Value);