到目前为止,我把这个放在一起:
\b\S*[^\w\s^'^&]\S*\b
我试图抓住被审查的整个词:I.E。 d*mn
或d_mn
,但不希望&
或't
's
're
匹配,也需要将其设为{{}} {1}}不匹配。
我的目标是通过使用符号代替字母来吸引人们试图发誓说话。所以除了像撇号这样的东西之外,任何带符号的单词都应该被捕获。 1.23
符号是格式化的东西,每个字母最多可以有一个。因此&
和'
可以使用。带小数的数字应该起作用,因为它们不是脏话。应该抓住&
和s**t
或d_mn
等内容。
我需要数字部分的帮助。
我为d.mn
尝试^\d.\d
,但这对我不起作用。
答案 0 :(得分:0)
这是我的初步答案:
\b[a-zA-Z]*(?:[^\w\s^'&]|_)+[a-zA-Z]+\b
使用[a-zA-Z]
代替\S
不再包含数字。
编辑:现在要求单词以字母结尾。我也做了它,它将匹配重复的特殊字符,如a$$hole
。
答案 1 :(得分:0)
如何使用这个:
\b\p{L}*[\p{S}\p{P}]((\p{L}[\p{P}\p{S}])|([\p{P}\p{S}]\p{L})|(\p{L}))+\b
\p{L}
是任何(unicode)字母\p{S}
是任何符号\p{P}
是任何标点符号模式的第一部分(\p{L}*[\p{S}\p{P}]
)确保该单词必须包含至少一个符号或标点符号。模式((\p{L}[\p{P}\p{S}])|([\p{P}\p{S}]\p{L})|(\p{L}))+
的其余部分指定了事物如何重复。可以接受一个字母的序列,后跟一个标点/符号,一个标点符号/后跟一个字母或一个字母。
要在Java代码中使用此模式,请确保首先用双反斜杠替换所有反斜杠字符。