在Android中使用正则表达式将“ - ”替换为空格

时间:2014-06-02 22:02:26

标签: java android regex

我有一个字符串,我需要用空格替换'.''_''-'个字符。下面的代码工作正常。

String value = "my-test-is-here.and.here_and_even-here";
value = value.replaceAll("[\\._-]", " ");

我的问题是,在像"my test - your text"这样的字符串中,我需要保持由空格(' - ')包围的短划线不变。我试着使用前瞻,然后像这样看

"[\\._((?<!\\s)-(?!\\s)){1}]"

但我得到以下异常。

01-15 08:45:12.786: E/AndroidRuntime(25950): java.util.regex.PatternSyntaxException: In a character range [x-y], x is greater than y near index 14:
01-15 08:45:12.786: E/AndroidRuntime(25950): [\._((?<!\s)-(?!\s)){1}]
01-15 08:45:12.786: E/AndroidRuntime(25950):               ^

我做错了什么?

更新:我最终得到了以下表达式,完全满足了我的需求。

"[._]|(?<!\\s)-(?!\\s)|(-$)|(^-)"

1 个答案:

答案 0 :(得分:2)

character class之外放置前瞻和后瞻断言

value = value.replaceAll("[._]|(?<!\\s)-(?!\\s)", " ");