正则表达式匹配所有\p{L}但不包括\p{Alpha}

7

我如何在正则表达式中匹配所有\p{L}但不匹配\p{Alpha}

在Java的正则表达式中,是否可以实现逻辑上的AND操作?如果是,如何实现?


你到目前为止尝试了哪个正则表达式? - donfuxx
这个标签既有Java又有C#,有什么原因吗? - Kjartan
@Kjartan 因为我的服务器是Java,而我的客户端程序是C#。 - Minh Le
@MinhLe 哦,好的。也许你需要两个版本的正则表达式?如果你想在服务器端和客户端上搜索相同的匹配项,你可能需要一个Java版本的正则表达式,以及一个不同的C#版本,因为我了解它们并不总是等价的。(虽然这似乎是一个相对简单的情况,所以也许它们在这里是等价的)。 - Kjartan
2个回答

8

是的,通过使用否定字符类

[^\P{L}\p{Alpha}]

[^\P{L}]\p{L}匹配相同,但否定字符类使得可以从该字符集中减去字符/属性。


5

这是可能的,但它是针对Java特定的:

[\p{L}&&[^\p{Alpha}]]

(在Java字符串中适当引用等)

非常好。也可以写成[\p{L}&&\P{Alpha}] - Tim Pietzcker
抱歉,我在这个网站http://www.myregextester.com/index.php#resultstab上测试了一下,发现它不能在C#和Java中使用。这个网站有问题吗?如果有问题,我会在我的Java程序中进行测试。 - Minh Le
这绝对是一个有效的Java正则表达式 - 但不适用于C#。采用@TimPietzcker的解决方案,它可以正常工作(tm)。 - fge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接