<tr>
<td>
<p> 软件开发部 | 售前应用工程师 | 6000-8000元/月</p>
<p> 售前应用工程师 | 6000-8000元/月</p>
<p> 软件开发部 | 售前应用工程师</p>
</td>
</tr>
<tr>
<td>
<p>汽车/摩托车 | 企业性质:外商独资 | 规模:20-99人
</p>
</td>
</tr>
上面P标签,有3种情况,要求写一个正则,匹配出 售前应用工程师 这几个字,字是会变的,”元/月“这个如果有就是这样的不变,每个部分是由“|”分割的。
string regString = "<p>(<part1>[^|<]*)[|](<part2>[^<]*)</p>";
然后对<part2>再做解析;
如果 元/月 这个字段是固定的,要么有,要么没有,正则可以这样写:
regString = "<p>(<part1>[^\|<]*)[|](<part2>[^<元]*)(元/月)*</p>";
regString = "<p>(<part1>[^\|<]*)[|](<part2>\d+[-]\d+)(元/月)*</p>";
part1 对应的就是 “ 售前应用工程师 ”字段。
@小尧弟:
((?<val>[^|<>]+?)\|[^|]+?(元/月|RMB/Month)\s*?</p>|<p>[^<>|]+?\|(?<val>[^|<>元RMB]+?)</p>|<p>\s*?(?<val>\w+?)\s*?</p>)
第一种情况很容易判断,第二第三种情况就很难区分了,除非给定第二种情况一个条件:当出现第二种情况时,“|”后必定是月薪
对的 ,第二种情况出现 | 后面就一定是月薪,第三者也是那样的,也就是出现两个|,如果已 月薪结尾取前面的,否则取后面的
是出现一个 |