在C#中,我需要在短语*| variablename |*中捕获variablename.
我有这个RegEx: Regex regex = new Regex(@"\*\|(.*)\|\*");
在线正则表达式测试者返回"variablename",但在C#代码中,它返回*| variablename |*,或包含星号和条形字符的字符串.任何人都知道我为什么会遇到这个回报值?
非常感谢!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace RegExTester
{
class Program
{
static void Main(string[] args)
{
String teststring = "This is a *|variablename|*";
Regex regex = new Regex(@"\*\|(.*)\|\*");
Match match = regex.Match(teststring);
Console.WriteLine(match.Value);
Console.Read();
}
}
}
//Outputs *|variablename|*, instead of variablename
Run Code Online (Sandbox Code Playgroud)
Bol*_*ock 12
match.Value包含整个比赛.这包括自您在正则表达式中指定它们以来的分隔符.当我测试您的正则表达式并使用RegexPal输入时,它突出显示*|variablename|*.
您只想获取捕获组(括号中的内容),因此请使用match.Groups[1]:
String teststring = "This is a *|variablename|*";
Regex regex = new Regex(@"\*\|(.*)\|\*");
Match match = regex.Match(teststring);
Console.WriteLine(match.Groups[1]);
Run Code Online (Sandbox Code Playgroud)