我在Java中编写了一个正则表达式,用于捕获某些没有空格的单词。 单词只能包含字母,数字,连字符和圆点。 字符集[\w+\-\\.]
工作正常。 现在我想编辑设置以允许点之后的单个空间。 如何编辑我的正则表达式?正则表达式,其中包含一个字符后跟一个字符
回答
您可以添加匹配该额外要求的alternation
([\w\-.]|(?<=\.))+
(?<=\.)
是lookbehind assertion。它确保只有空格匹配,如果它前面有一个点。
其他提示:
\w
包含下划线和每默认情况下只ASCII字母/数字匹配。如果您关心的是Unicode,请使用修饰符UNICODE_CHARACTER_CLASS
以启用对于\w
的Unicode或使用Unicode properties\p{L}
和\p{Nd}
来匹配Unicode字母和数字。你不需要逃避角色类中的点。
您的字符类中有
\w+
,您是否知道,您只是将“+”字符添加到接受的字符?
你忘了提及字符类中的'+'。我很确定这是一个错误。 –
不,我的意思是*里面的字符类是'[\ w + \ - 。]'。 OP没有列出“+”作为允许的字符之一,所以这可能不是他的意思。我们发现那些仍然模糊了正方括号和正则表达式括号之间差异的人会遇到这样的错误。 –
@AlanMoore,对不起,完全忽略了这个区别,在char类和允许的字符之间。为此添加了一点。 – stema
如果一个点后跟一个空格,我想这个模式应该既不是匹配字符串中的第一个也不是最后一个?您可能需要把它们放在字边界\b
:
([0-9A-Za-z-]|\b\.(\b)?)+
我故意没有使用\w
,排除下划线。
所有提出的解决方案的作品,谢谢大家,我今天学到了很多关于正则表达式的东西:) – Andrea
只允许后点空单,你可以使用这个表达式:
^(?!.*?\. {2})[\w.-]+$
- 你不需要逃避字符类中圆点或连字符
(?!.*?\. {2})
是否定性预测,在点后不允许有2个或更多空格
所有提出的解决方案的作品,谢谢大家,我今天学到了很多关于正则表达式的东西:) – Andrea
- 1. 正则表达式包含字符串,不包含另一个
- 2. 正则表达式字符串后跟一个数字php字符串替换
- 3. 正则表达式 - 如果其后跟另一个字符,则只选择一个字符
- 4. Java正则表达式:匹配一个字符后跟空格?
- 5. 正则表达式来确定一个字符串是否包含在另一个字符中(n个字符)
- 6. 2个字母后跟4个字符的正则表达式
- 7. 正则表达式来检查一个字符串只包含一个字
- 8. Validade如果字符串包含一个正则表达式串
- 9. 正则表达式字符串包含最多一个 '#'
- 10. 包含^和*的正则表达式会丢失一个字符?
- 11. 防止正则表达式组包含前一个字符?
- 12. 正则表达式匹配:不包含在一个字符串
- 13. 的正则表达式最后一个字符和字符串
- 14. 一个字符串正则表达式
- 15. C#正则表达式 - 如果字符串只包含一个字符
- 16. 字符串包含另一个字符串或正则表达式(红宝石)
- 17. 正则表达式字符串包含
- 18. 正则表达式搜索包含一个符号的两个字符
- 19. 一个数字的正则表达式后跟一个词
- 20. 第一个字符和最后一个字符的正则表达式条件
- 21. 正则表达式匹配字如果字符串不包含另一个字
- 22. 在正则表达式字符括号中包含连字符?
- 23. 正则表达式包含带换行符的最后一个字
- 24. 的Tcl:匹配字符串仅当后跟一个数字[正则表达式]
- 25. 正则表达式匹配其中一个字符串
- 26. 正则表达式除去第一和最后一个字符
- 27. 正则表达式小写字母后跟一个数字
- 28. 正则表达式查找字符串后跟字符
- 29. 正则表达式,如果一个字符串包含所有特定符号
- 30. 正则表达式匹配前两个字符后跟一个空格
是否允许多个点?你能告诉我们一些输入/输出吗? – Toto
我想捕获像“史密斯”和更复杂的名字,如“史密斯夫人”的简单名称 – Andrea