正则表达式匹配a-Z0-9

时间:2013-11-25 14:11:53

标签: .net regex

假设我们有

function test1(
function           t2 (
function test3asdfasd                            (
function(
function (

函数名只接受a-Z0-9然后有Left Parathensis 我想先匹配3,但不要匹配CSharp上的2last

感谢

2 个答案:

答案 0 :(得分:4)

您可以在.NET中使用以下内容:

(?<=function\s*)[a-zA-Z0-9]+(?=\s*\()
  • (?<=function\s*):确保匹配的内容前面是文字字符串function,然后是零个或多个\s*个空格。
  • [a-zA-Z0-9]*:用于匹配函数名称。
  • (?=\s*\():这用于确保前一部分匹配的字符串实际上是一个函数名称,确保它后跟一个打开的括号(

在C#中,您可以使用Regex.Matches()方法,如下所示:

string pattern = @"(?<=function\s*)[a-zA-Z0-9]+(?=\s*\()";
string sentence = "function hello()";

foreach (Match match in Regex.Matches(sentence, pattern))
    Console.WriteLine("Found '{0}' at position {1}", 
                       match.Value, match.Index);

编辑:在Notepad ++中您需要将表达式更改为此表达式:

function\s*\K[a-zA-Z0-9]+(?=\s*\()

如果您的函数名称可以包含下划线_,那么在字符类中包含下划线,如下所示:

[a-zA-Z0-9_]
          ^

编辑2:如果我的上一条评论是正确的,那么您可以稍微修改一下这些表达式:

 (?<=^\s*function\s*)[a-zA-Z0-9]+(?=\s*\()

并在Notepad ++中:

 ^\s*function\s*\K[a-zA-Z0-9]+(?=\s*\()

RegexHero Demo

答案 1 :(得分:1)

考虑以下Regex ......

function\s+[\w\d]+\s*\(

祝你好运!