所有,我目前正在尝试使用regex和c#解析具有以下格式的每个元素以查找下面的()中的任何值。示例我想提取2002_max_allow_date ..注意这里的所有名称都不会是字母数字等......
我最初有这样的模式:Regex regex = new Regex(@“(\ w \ d \ d \ d。[A-Z])\ w +”);
但是,这只返回带有数字等的名称
从回复我尝试以下并尝试格式化,以便我不会得到语法错误,以及我不想更改正则表达式查询...
有人可以帮我找到位于第三位的名字。例如,'46032','46032','2002_MAX_ALLOW_DATE'
<button class="longlist-cb longlist-cb-yes" id="cb46032"
onclick="$ll.CATG.toggleCb(this,'46032','46032','2002_MAX_ALLOW_DATE')"
</button>
答案 0 :(得分:0)
第二次编辑:
我编写了一些代码,将onclick中的所有元素作为捕获组提供:
Regex regex = new Regex("onclick=\"\\$ll.CATG.toggleCb\\((.*),\\s?(.*),\\s?(.*),\\s?(.*)\\)");
string x = "<button class=\"longlist - cb longlist - cb - yes\" id=\"cb46032\" onclick=\"$ll.CATG.toggleCb(this, '46032', '46032', '2002_MAX_ALLOW_DATE')\"></button>";
Match match = regex.Match(x);
if (match.Success)
{
Console.WriteLine("match.Value returns: " + match.Value);
foreach (Group y in match.Groups)
{
Console.WriteLine("the current capture group: " + y.Value);
}
}
else
{
Console.Write("No match");
}
Console.ReadKey();
编辑:尝试使用VS后,这对我有用: Regex regex = new Regex("onclick=\"\\$ll.CATG.toggleCb\\((.*),.*,.*,.*\\)");
原始答案:
如果您在提供的文字上使用 Regex regex = new Regex(@"onclick="\$ll.CATG.toggleCb\(.*,.*,(.*),.*\)");
,则应返回'46032'
。
您可以通过将捕获 (
和)
移动到另一个.*
来更改此正则表达式,以捕获第四个元素,如下所示:{{1}将捕获onclick="\$ll.CATG.toggleCb\((.*),.*,.*,.*\)
。
答案 1 :(得分:0)
请试试这个
Regex rex = new Regex("'[^']+','[^']+','(?<ThirdElement>[^']+)'");
String data = "'46032','46032','2002_MAX_ALLOW_DATE'";
Match match = rex.Match(data);
Console.WriteLine(match.Groups["ThirdElement"]); // Output: 2002_MAX_ALLOW_DATE
答案 2 :(得分:0)
为什么不获取onclick
的属性值,而是获取使问题变得复杂的按钮的所有HTML。
使用String.Split
可以简单地解决您的问题,但您选择使用RegExp。
the_button_element.GetAttribute('onclick').Split(',')[3]
或使用RegExp:
new Regex(@".*?,'(\w+)'\)$")