正则表达词捕捉

时间:2013-01-22 19:35:23

标签: regex expression

到目前为止,我把这个放在一起:

\b\S*[^\w\s^'^&]\S*\b

我试图抓住被审查的整个词:I.E。 d*mnd_mn,但不希望&'t 's 're匹配,也需要将其设为{{}} {1}}不匹配。

我的目标是通过使用符号代替字母来吸引人们试图发誓说话。所以除了像撇号这样的东西之外,任何带符号的单词都应该被捕获。 1.23符号是格式化的东西,每个字母最多可以有一个。因此&'可以使用。带小数的数字应该起作用,因为它们不是脏话。应该抓住&s**td_mn等内容。

我需要数字部分的帮助。

我为d.mn尝试^\d.\d,但这对我不起作用。

2 个答案:

答案 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代码中使用此模式,请确保首先用双反斜杠替换所有反斜杠字符。