我有以下字符串:

<SEM>electric</SEM> cu <SEM>hello</SEM> rent <SEM>is<I>love</I>, <PARTITION />mind


我想在“ PARTITION”标签之前找到最后一个“ SEM”开始标签。不是SEM结束标签,而是开始标签。结果应为:

<SEM>is <Im>love</Im>, <PARTITION />


我试过这个正则表达式:

<SEM>[^<]*<PARTITION[ ]/>


但是只有在最后的“ SEM”和“ PARTITION”标签之间没有其他标签时,该标签才有效。有任何想法吗?

最佳答案

这是您愚蠢的Regex !!!

(?=[\s\S]*?\<PARTITION)(?![\s\S]+?\<SEM\>)\<SEM\>


这就是说“在某处的前面是一个PARTITION标签...但是在前面的地方不是另一个SEM标签...与SEM标签匹配。”

请享用!

这是正则表达式分解:

(?=[\s\S]*?\<PARTITION) means "While ahead somewhere is a PARTITION tag"
(?![\s\S]+?\<SEM\>) means "While ahead somewhere is not a SEM tag"
\<SEM\> means "Match a SEM tag"

关于c# - 查找单词的最后一次出现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/316855/

10-10 09:11