我正在使用String.Replaceall
替换正斜杠/
后跟或前面加一个逗号后跟空格", "
的空格除了一些模式(例如n/v
,{ {1}}不应受影响)
以下所有输入
n/d
应输出为
"nausea/vomiting"
"nausea /vomiting"
"nausea/ vomiting"
"nausea / vomiting"
以下所有输入
nausea, vomiting
应输出如下
"user have n/v but not other/ complications"
"user have n/d but not other / complications"
我试过了
"user have n/v but not other, complications"
"user have n/d but not other, complications"
但它之前切断了a并且让我感到恶心,呕吐
有没有人知道解决方案?
答案 0 :(得分:0)
[^n/v]
是字符类,意味着除n
,/
或v
之外的任何内容。
你可能正在寻找类似负面的背后隐藏:
String regex= "(?<!\\bn)(\\s*/\\s*)";
这将匹配任何前面没有n
的斜杠和空格组合,并适用于所有示例。您可以在外观here上阅读更多内容。
答案 1 :(得分:0)
您的第一个捕获组([^n/v])
捕获任何不是字母n
,字母v
或斜杠(/
)的字符。在这种情况下,它匹配a
末尾的nausea
并将其捕获以进行替换。
你需要更清楚自己是什么,而不是在这里取代。你只是想确定有一个逗号而不是以“呕吐”或“d”结束吗?您可以使用非捕获组来指示:
(?=asdf)
没有捕获但是当放在最后确保匹配后,字符串将包含asdf
; (?!asdf)
确保不。无论您使用哪个,初始括号后面的问号都会确保在找到匹配项时不会返回或替换它匹配的任何文本。
此外,不要忘记在Java源代码中,您必须始终将您放入字符串文字中的任何反斜杠加倍。