我对跟随问题感到不安。我需要在某些条件下匹配单词中的点。
示例:
D.A.R.Y.L. or se.ven or go/the will be untreated.
Dr. Odissey. or look, or look: will be treated.
我以前用过:
([A-Z]+[.\\-/]+)+([A-Z]+[.\\-/]?)*
它部分有效,但它无法区分Dr. Odissey.
等等。
答案 0 :(得分:1)
以Java风格尝试此模式:
(?<!\\S)[A-Za-z]+\\p{Punct}(?!\\S)
您可以使用您选择的标点字符\\p{Punct}
[.,:;]
答案 1 :(得分:0)
如果您正在寻找以标点符号结尾的单词,可以使用
\b[a-zA-Z]+\p{P}?(?=\s|$)
\b
是一个非字边界
\p{P}
匹配任何标点符号
(?=\s|$)
将检查字符串的空格或结尾
答案 2 :(得分:0)
似乎(?)你想匹配/替换一个点,如果(并且只有)它后跟空格或字符串的结尾。这是对的吗?
在这种情况下,假设您想要将点更改为感叹号,
newString = oldString.replaceAll("(?<=^|\\s)(\\w+)\\.(?=\\s|$)", "$1!");
会改变
D.A.R.Y.L. or se.ven or go/the Dr. Odissey. or look, or look:
到
D.A.R.Y.L. or se.ven or go/the Dr! Odissey! or look, or look:
答案 3 :(得分:0)
如果您只想找到单词中的点,那么您可以使用此
\b[.]\b
或者,如果你只是在单词结尾处寻找点,那么试试这个
\b[.](?:\s|$)|(?:^|\s)[.]\b
当然,这将与.
D.A.R.Y.L.
相匹配