java - 如何向\p{S} 添加否定

标签 java regex regex-negation

嗨,有人为我提供了一个很好的解决方案,其中包括 \p{S} 来匹配正则表达式中的任何符号。问题是我需要从 \p{S} 中消除两个符号。我不希望 &' 匹配。

我以为 \p{S^&^'} 可能会起作用,但事实并非如此。我在网上查过,但不太确定要搜索什么。

请帮忙。

\b\p{L}*[\p{S}\p{P}]((\p{L}[\p{P}\p{S}])|([\p{P}\p{S}]\p{L})|(\p{L}))+\b

另一个解决方案是 \b([a-zA-Z]+(?:[^\w\s^'&]|_)[a-zA-Z]*)|[a- zA-Z]*(?:[^\w\s^'&]|_)[a-zA-Z]+\b 但它捕获以标点符号结尾的单词。如果它不这样做,它也会起作用。

最佳答案

使用character class subtraction (如果有的话):

[\p{S}-[&']]

如果不可用,请使用 lookahead :

(?!.?[&'])\p{S}

关于java - 如何向\p{S} 添加否定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14589007/

相关文章:

java - 更改字符串日期格式

Javascript 正则表达式建议

java - 正则表达式 : file names that do not contain a word and matches a given pattern

正则表达式匹配。 (标记句末的句号),而不是Mr.(与Hopkins先生一样)

java - Android Listview 显示 ArrayList 中的最后一个元素

java - jvm jit 公共(public)子表达式消除

java - 同步对象: Locking Code vs Locking Object

regex - tcl 在迭代列表中的项目时获得正则表达式匹配

regex - 如何用斜杠来grep一个精确的字符串?

regex - 优雅的正则表达式匹配所有标点符号但不匹配 "'“在 emacs Lisp 中?