这是输入字符串:23x^45*y or 2x^2 or y^4*x^3。
我^[0-9]+在 letter 之后进行匹配x。换句话说,我匹配x后跟^数字。问题是我不知道我正在匹配x,它可能是我在 char 数组中作为变量存储的任何字母。
例如:
foreach (char cEle in myarray) // cEle is letter in char array x, y, z, ...
{
match CEle in regex(input) //PSEUDOCODE
}
Run Code Online (Sandbox Code Playgroud)
我是正则表达式的新手,我知道如果我定义正则表达式变量就可以做到这一点,但我不知道如何做。
@"[cEle]\^\d+"您可以使用从字符数组动态创建的模式:
string s = "23x^45*y or 2x^2 or y^4*x^3";
char[] letters = { 'e', 'x', 'L' };
string regex = string.Format(@"[{0}]\^\d+",
Regex.Escape(new string(letters)));
foreach (Match match in Regex.Matches(s, regex))
Console.WriteLine(match);
Run Code Online (Sandbox Code Playgroud)
结果:
x^45
x^2
x^3
Run Code Online (Sandbox Code Playgroud)
有几点需要注意:
^正则表达式内部进行转义,否则它具有特殊含义“行首”。Regex.Escape将用户的文字字符串插入正则表达式时使用这是一个好主意,以避免他们键入的任何字符被误解为特殊字符。tax^2. 这可以通过要求字边界 ( \b) 来避免。x^1这样写,x那么这个正则表达式将不匹配它。这可以通过使用来修复(\^\d+)?。