Replace all characters not in range (Java String)

后端 未结 2 409
执念已碎
执念已碎 2020-12-14 07:21

How do you replace all of the characters in a string that do not fit a criteria. I\'m having trouble specifically with the NOT operator.

Specifically, I\'m trying

相关标签:
2条回答
  • 2020-12-14 07:56

    Here's a quick cheat sheet of character class definition and how it interacts with some regex meta characters.

    • [aeiou] - matches exactly one lowercase vowel
    • [^aeiou] - matches a character that ISN'T a lowercase vowel (negated character class)
    • ^[aeiou] - matches a lowercase vowel anchored at the beginning of the line
    • [^^] - matches a character that isn't a caret/'^'
    • ^[^^] - matches a character that isn't a caret at the beginning of line
    • ^[^.]. - matches anything but a literal period, followed by "any" character, at the beginning of line
    • [a-z] - matches exactly one character within the range of 'a' to 'z' (i.e. all lowercase letters)
    • [az-] - matches either an 'a', a 'z', or a '-' (literal dash)
    • [.*]* - matches a contiguous sequence (possibly empty) of dots and asterisks
    • [aeiou]{3} - matches 3 consecutive lowercase vowels (all not necessarily the same vowel)
    • \[aeiou\] - matches the string "[aeiou]"

    References

    • regular-expressions.info/Character class, Anchors, Dot, Repetition

    Related questions

    • Regex: why doesn't [01-12] range work as expected?
    • Character class subtraction, converting from Java syntax to RegexBuddy
    • How can I exclude some characters from a class?
    0 讨论(0)
  • 2020-12-14 08:04

    To explain: The ^ at the start of a character class will negate that class But it has to be inside the class for that to work. The same character outside a character class is the anchor for start of string/line instead.

    You can try this instead:

    "[^0-9]"
    
    0 讨论(0)
提交回复
热议问题