为什么我的Regex子模式只在递归匹配时才工作?
问题描述:
Link to demo of the Regex.我不明白为什么(?P=name)
导致模式不匹配。我不能使用递归,因为我在C#中使用模式。为什么我的Regex子模式只在递归匹配时才工作?
答
您的问题是C#正则表达式不支持子例程,这是(?P(DEFINE)
创建的。您也无法使用反向引用,因为Row值不相等,您只需将内联子程序插入并重复:
^ +<tr class="clickable" data-id="(?<AccountID>[^"]+)" data-jobid=\"(?<JobID>[^\"]+)\"(?:(?:<\/td)?>[^>]+>)(?<InvoiceID>[^<]+)(?:(?:<\/td)?>[^>]+>)(?<Date>[^ ]+)\n +(?:(?:<\/td)?>[^>]+>)(?<Status>[^<]+)(?:(?:<\/td)?>[^>]+>)(?<Type>[^<]+)(?:(?:<\/td)?>[^>]+>)(?<Total>[^<]+)(?:(?:<\/td)?>[^>]+>)(?<Balance>[^<]+)(?:(?:<\/td)?>[^>]+>)(?<Paid>[^<]+)(?:(?:<\/td)?>[^>]+>)(?<Technician>[^<]+)(?:(?:<\/td)?>[^>]+>)
欢迎来到'SO'。真的,这是一个禁忌。改为使用解析器! – Jan
[查看此链接](https://stackoverflow.com/a/100393/8195525) – Derek