使用以下正则表达式,它不匹配-lp [number]
public static Regex lPageID = new Regex(@"\-lp\d+\.", RegexOptions.Compiled | RegexOptions.IgnoreCase);
public static int GetPageIDFromPath(string path)
{
return GetIDFromPath(lPageID, path);
}
发送到我的函数的示例路径:
/domain/Some-Landing-Page-Meta-Title-lp1.lp
private static int GetIDFromPath(Regex regex, string path)
{
Match match = regex.Match(path);
if (match.Success)
{
string value = match.Value;
value = value.Substring(2, value.Length - 3);
int id;
if (Int32.TryParse(value, out id))
return id;
}
return 0;
}
我需要在-lp之后获取数字。它似乎是它不喜欢额外的字符或不喜欢p因为-l工作正常如果我将正则表达式更改为单个字母后 - 例如:
public static Regex lPageID = new Regex(@"\-l\d+\.", RegexOptions.Compiled | RegexOptions.IgnoreCase);
示例字符串:/domain/Some-Landing-Page-Meta-Title-l1.l
答案 0 :(得分:1)
也许您只需要添加捕获括号,以便在匹配后可以访问该号码?
"\-lp(\d+)\."
答案 1 :(得分:0)
(?<=-lp)(\d+)
没有选项,为我提供以下测试数据:
Some-Page-Meta-Title-lp1.lp
Some-Page-Meta-Title-lp1093.lp
Some-Page-Meta-Title-lp122.lp
Some-Page-Meta-Title-lp1222223.lp
答案 2 :(得分:0)
你还没有说出错误发生在哪里,但看起来你可能需要使用“value.Length - 4”,而不是“value.Length - 3”。
我在上网本上,所以无法测试,但看起来你可能会包含“。”当你采用子串。如果是这样,Int32.TryParse将失败。这就是问题所在吗?
我认为,当“lp1”测试失败时,这也会导致“l1”测试通过。