java中字符串以小数点作为分…

来源:互联网 发布:windows连接不到打印机 编辑:程序博客网 时间:2024/06/06 03:19
原文地址:java中字符串以小数点作为分隔符问题作者:行云流水

   在做项目过程中,以前处理字符串时,总是以一些常见的符号作为分隔符,没遇到什么问题。最近在处理用户登录过滤IP时,才发现用小数点作为分隔符有问题,无法实现想要的效果。代码如下:

String ip = "192.168.1.1";

String[] ips = ip.split(".");// 我们经常用 分号,逗号,顿号以及其他一些符号 都很正常

刚开始以为是split方法对此有特殊要求,小数点有特殊用途,不能作为分隔符。最后查询了下 jdk api才发现不是split方法的问题。是模式匹配的事。

    我们在调用split(".")方法时,程序都会以中间符号作为模式匹配的字符。例如:ip.split(".")时,程序会用“.”在ip中进行匹配。但是在 Pattern 类中方法中,有些符号有特殊定义。例如:小数点“.”代表匹配的是任意字符,而不是小数点了。这些我们在正则表达式中经常遇到。如果想使用小数点 必须加上“\

String[] ips = ip.split("\."); 就能达到想要的效果了。以小数点作为分隔符。

 

下面贴出的是 Pattern类中的一些 特殊字符。大家可以参考下,以便以后学习

ConstructMatches CharactersxThe character x\The backslash characternThe character with octal value0n(0 <= n <= 7)nnThe character with octal value0nn(0 <= n <= 7)mnnThe character with octal value0mnn(0 <= m <= 3,0 <= n <= 7)xhhThe character withhexadecimal value 0xhhuhhhhThe character withhexadecimal value 0xhhhhtThe tab character ('u0009')nThe newline (line feed) character('u000A')rThe carriage-return character('u000D')fThe form-feed character('u000C')aThe alert (bell) character('u0007')eThe escape character ('u001B')cxThe control character corresponding tox Character classes[abc]a, b, or c (simpleclass)[^abc]Any character except a, b,or c (negation)[a-zA-Z]a through z or Athrough Z, inclusive (range)[a-d[m-p]]a through d, or mthrough p: [a-dm-p] (union)[a-z&&[def]]d, e, or f(intersection)[a-z&&[^bc]]a through z, except forb and c: [ad-z] (subtraction)[a-z&&[^m-p]]a through z, and notm through p: [a-lq-z](subtraction) Predefined character classes.Any character (may or may not match line terminators)dA digit: [0-9]DA non-digit: [^0-9]sA whitespace character: [tnx0Bfr]SA non-whitespace character:[^s]wA word character: [a-zA-Z_0-9]WA non-word character: [^w] POSIX character classes (US-ASCIIonly)p{Lower}A lower-case alphabetic character:[a-z]p{Upper}An upper-case alphabeticcharacter:[A-Z]p{ASCII}All ASCII:[x00-x7F]p{Alpha}An alphabeticcharacter:[p{Lower}p{Upper}]p{Digit}A decimal digit: [0-9]p{Alnum}An alphanumericcharacter:[p{Alpha}p{Digit}]p{Punct}Punctuation: One of!"#$%&'()*+,-./:;<=>?@[]^_`{|}~p{Graph}A visible character:[p{Alnum}p{Punct}]p{Print}A printable character:[p{Graph}x20]p{Blank}A space or a tab: [ t]p{Cntrl}A control character:[x00-x1Fx7F]p{XDigit}A hexadecimal digit:[0-9a-fA-F]p{Space}A whitespace character: [tnx0Bfr] java.lang.Character classes (simple java character type)p{javaLowerCase}Equivalent to java.lang.Character.isLowerCase()p{javaUpperCase}Equivalent to java.lang.Character.isUpperCase()p{javaWhitespace}Equivalent to java.lang.Character.isWhitespace()p{javaMirrored}Equivalent to java.lang.Character.isMirrored() Classes for Unicode blocks andcategoriesp{InGreek}A character in theGreek block (simple block)p{Lu}An uppercase letter (simple category)p{Sc}A currency symbolP{InGreek}Any character except one in the Greek block(negation)[p{L}&&[^p{Lu}]] Any letter except an uppercase letter(subtraction) Boundary matchers^The beginning of a line$The end of a linebA word boundaryBA non-word boundaryAThe beginning of the inputGThe end of the previous matchZThe end of the input but for the finalterminator, if anyzThe end of the input Greedy quantifiersX?X, once or not at allX*X, zero or more timesX+X, one or more timesX{n}X, exactly n timesX{n,}X, at least n timesX{n,m}X, at least n but not more thanm times Reluctant quantifiersX??X, once or not at allX*?X, zero or more timesX+?X, one or more timesX{n}?X, exactly n timesX{n,}?X, at least n timesX{n,m}?X, at least n but not more thanm times Possessive quantifiersX?+X, once or not at allX*+X, zero or more timesX++X, one or more timesX{n}+X, exactly n timesX{n,}+X, at least n timesX{n,m}+X, at least n but not more thanm times Logical operatorsXYX followed by YX|YEither X or Y(X)X, as a capturinggroup Back referencesnWhatever thenth capturinggroup matched QuotationNothing, but quotes the followingcharacterQNothing, but quotes all characters untilEENothing, but ends quoting started byQ Special constructs(non-capturing)(?:X)X, as a non-capturing group(?idmsux-idmsux) Nothing, but turns match flags i d m s u x on - off(?idmsux-idmsux:X)  X, as a non-capturinggroup with the given flags id m s u x on - off(?=X)X, via zero-width positivelookahead(?!X)X, via zero-width negativelookahead(?<=X)X, via zero-width positivelookbehind(?<!X)X, via zero-width negativelookbehind(?>X)X, as an independent, non-capturinggroupConstructMatches CharactersxThe character x\The backslash characternThe character with octal value0n(0 <= n <= 7)nnThe character with octal value0nn(0 <= n <= 7)mnnThe character with octal value0mnn(0 <= m <= 3,0 <= n <= 7)xhhThe character withhexadecimal value 0xhhuhhhhThe character withhexadecimal value 0xhhhhtThe tab character ('u0009')nThe newline (line feed) character('u000A')rThe carriage-return character('u000D')fThe form-feed character('u000C')aThe alert (bell) character('u0007')eThe escape character ('u001B')cxThe control character corresponding tox Character classes[abc]a, b, or c (simpleclass)[^abc]Any character except a, b,or c (negation)[a-zA-Z]a through z or Athrough Z, inclusive (range)[a-d[m-p]]a through d, or mthrough p: [a-dm-p] (union)[a-z&&[def]]d, e, or f(intersection)[a-z&&[^bc]]a through z, except forb and c: [ad-z] (subtraction)[a-z&&[^m-p]]a through z, and notm through p: [a-lq-z](subtraction) Predefined character classes.Any character (may or may not match line terminators)dA digit: [0-9]DA non-digit: [^0-9]sA whitespace character: [tnx0Bfr]SA non-whitespace character:[^s]wA word character: [a-zA-Z_0-9]WA non-word character: [^w] POSIX character classes (US-ASCIIonly)p{Lower}A lower-case alphabetic character:[a-z]p{Upper}An upper-case alphabeticcharacter:[A-Z]p{ASCII}All ASCII:[x00-x7F]p{Alpha}An alphabeticcharacter:[p{Lower}p{Upper}]p{Digit}A decimal digit: [0-9]p{Alnum}An alphanumericcharacter:[p{Alpha}p{Digit}]p{Punct}Punctuation: One of!"#$%&'()*+,-./:;<=>?@[]^_`{|}~p{Graph}A visible character:[p{Alnum}p{Punct}]p{Print}A printable character:[p{Graph}x20]p{Blank}A space or a tab: [ t]p{Cntrl}A control character:[x00-x1Fx7F]p{XDigit}A hexadecimal digit:[0-9a-fA-F]p{Space}A whitespace character: [tnx0Bfr] java.lang.Character classes (simple java character type)p{javaLowerCase}Equivalent to java.lang.Character.isLowerCase()p{javaUpperCase}Equivalent to java.lang.Character.isUpperCase()p{javaWhitespace}Equivalent to java.lang.Character.isWhitespace()p{javaMirrored}Equivalent to java.lang.Character.isMirrored() Classes for Unicode blocks andcategoriesp{InGreek}A character in theGreek block (simple block)p{Lu}An uppercase letter (simple category)p{Sc}A currency symbolP{InGreek}Any character except one in the Greek block(negation)[p{L}&&[^p{Lu}]] Any letter except an uppercase letter(subtraction) Boundary matchers^The beginning of a line$The end of a linebA word boundaryBA non-word boundaryAThe beginning of the inputGThe end of the previous matchZThe end of the input but for the finalterminator, if anyzThe end of the input Greedy quantifiersX?X, once or not at allX*X, zero or more timesX+X, one or more timesX{n}X, exactly n timesX{n,}X, at least n timesX{n,m}X, at least n but not more thanm times Reluctant quantifiersX??X, once or not at allX*?X, zero or more timesX+?X, one or more timesX{n}?X, exactly n timesX{n,}?X, at least n timesX{n,m}?X, at least n but not more thanm times Possessive quantifiersX?+X, once or not at allX*+X, zero or more timesX++X, one or more timesX{n}+X, exactly n timesX{n,}+X, at least n timesX{n,m}+X, at least n but not more thanm times Logical operatorsXYX followed by YX|YEither X or Y(X)X, as a capturinggroup Back referencesnWhatever thenth capturinggroup matched QuotationNothing, but quotes the followingcharacterQNothing, but quotes all characters untilEENothing, but ends quoting started byQ Special constructs(non-capturing)(?:X)X, as a non-capturing group(?idmsux-idmsux) Nothing, but turns match flags i d m s u x on - off(?idmsux-idmsux:X)  X, as a non-capturinggroup with the given flags id m s u x on - off(?=X)X, via zero-width positivelookahead(?!X)X, via zero-width negativelookahead(?<=X)X, via zero-width positivelookbehind(?<!X)X, via zero-width negativelookbehind(?>X)X, as an independent, non-capturinggroupConstructMatches CharactersxThe character x\The backslash characternThe character with octal value0n(0 <= n <= 7)nnThe character with octal value0nn(0 <= n <= 7)mnnThe character with octal value0mnn(0 <= m <= 3,0 <= n <= 7)xhhThe character withhexadecimal value 0xhhuhhhhThe character withhexadecimal value 0xhhhhtThe tab character ('u0009')nThe newline (line feed) character('u000A')rThe carriage-return character('u000D')fThe form-feed character('u000C')aThe alert (bell) character('u0007')eThe escape character ('u001B')cxThe control character corresponding tox Character classes[abc]a, b, or c (simpleclass)[^abc]Any character except a, b,or c (negation)[a-zA-Z]a through z or Athrough Z, inclusive (range)[a-d[m-p]]a through d, or mthrough p: [a-dm-p] (union)[a-z&&[def]]d, e, or f(intersection)[a-z&&[^bc]]a through z, except forb and c: [ad-z] (subtraction)[a-z&&[^m-p]]a through z, and notm through p: [a-lq-z](subtraction) Predefined character classes.Any character (may or may not match line terminators)dA digit: [0-9]DA non-digit: [^0-9]sA whitespace character: [tnx0Bfr]SA non-whitespace character:[^s]wA word character: [a-zA-Z_0-9]WA non-word character: [^w] POSIX character classes (US-ASCIIonly)p{Lower}A lower-case alphabetic character:[a-z]p{Upper}An upper-case alphabeticcharacter:[A-Z]p{ASCII}All ASCII:[x00-x7F]p{Alpha}An alphabeticcharacter:[p{Lower}p{Upper}]p{Digit}A decimal digit: [0-9]p{Alnum}An alphanumericcharacter:[p{Alpha}p{Digit}]p{Punct}Punctuation: One of!"#$%&'()*+,-./:;<=>?@[]^_`{|}~p{Graph}A visible character:[p{Alnum}p{Punct}]p{Print}A printable character:[p{Graph}x20]p{Blank}A space or a tab: [ t]p{Cntrl}A control character:[x00-x1Fx7F]p{XDigit}A hexadecimal digit:[0-9a-fA-F]p{Space}A whitespace character: [tnx0Bfr] java.lang.Character classes (simple java character type)p{javaLowerCase}Equivalent to java.lang.Character.isLowerCase()p{javaUpperCase}Equivalent to java.lang.Character.isUpperCase()p{javaWhitespace}Equivalent to java.lang.Character.isWhitespace()p{javaMirrored}Equivalent to java.lang.Character.isMirrored() Classes for Unicode blocks andcategoriesp{InGreek}A character in theGreek block (simple block)p{Lu}An uppercase letter (simple category)p{Sc}A currency symbolP{InGreek}Any character except one in the Greek block(negation)[p{L}&&[^p{Lu}]] Any letter except an uppercase letter(subtraction) Boundary matchers^The beginning of a line$The end of a linebA word boundaryBA non-word boundaryAThe beginning of the inputGThe end of the previous matchZThe end of the input but for the finalterminator, if anyzThe end of the input Greedy quantifiersX?X, once or not at allX*X, zero or more timesX+X, one or more timesX{n}X, exactly n timesX{n,}X, at least n timesX{n,m}X, at least n but not more thanm times Reluctant quantifiersX??X, once or not at allX*?X, zero or more timesX+?X, one or more timesX{n}?X, exactly n timesX{n,}?X, at least n timesX{n,m}?X, at least n but not more thanm times Possessive quantifiersX?+X, once or not at allX*+X, zero or more timesX++X, one or more timesX{n}+X, exactly n timesX{n,}+X, at least n timesX{n,m}+X, at least n but not more thanm times Logical operatorsXYX followed by YX|YEither X or Y(X)X, as a capturinggroup Back referencesnWhatever thenth capturinggroup matched QuotationNothing, but quotes the followingcharacterQNothing, but quotes all characters untilEENothing, but ends quoting started byQ Special constructs(non-capturing)(?:X)X, as a non-capturing group(?idmsux-idmsux) Nothing, but turns match flags i d m s u x on - off(?idmsux-idmsux:X)  X, as a non-capturinggroup with the given flags id m s u x on - off(?=X)X, via zero-width positivelookahead(?!X)X, via zero-width negativelookahead(?<=X)X, via zero-width positivelookbehind(?<!X)X, via zero-width negativelookbehind(?>X)X, as an independent, non-capturinggroupConstructMatches CharactersxThe character x\The backslash characternThe character with octal value0n(0 <= n <= 7)nnThe character with octal value0nn(0 <= n <= 7)mnnThe character with octal value0mnn(0 <= m <= 3,0 <= n <= 7)xhhThe character withhexadecimal value 0xhhuhhhhThe character withhexadecimal value 0xhhhhtThe tab character ('u0009')nThe newline (line feed) character('u000A')rThe carriage-return character('u000D')fThe form-feed character('u000C')aThe alert (bell) character('u0007')eThe escape character ('u001B')cxThe control character corresponding tox Character classes[abc]a, b, or c (simpleclass)[^abc]Any character except a, b,or c (negation)[a-zA-Z]a through z or Athrough Z, inclusive (range)[a-d[m-p]]a through d, or mthrough p: [a-dm-p] (union)[a-z&&[def]]d, e, or f(intersection)[a-z&&[^bc]]a through z, except forb and c: [ad-z] (subtraction)[a-z&&[^m-p]]a through z, and notm through p: [a-lq-z](subtraction)ConstructMatches CharactersxThe character x\The backslash characternThe character with octal value0n(0 <= n <= 7)nnThe character with octal value0nn(0 <= n <= 7)mnnThe character with octal value0mnn(0 <= m <= 3,0 <= n <= 7)xhhThe character withhexadecimal value 0xhhuhhhhThe character withhexadecimal value 0xhhhhtThe tab character ('u0009')nThe newline (line feed) character('u000A')rThe carriage-return character('u000D')fThe form-feed character('u000C')aThe alert (bell) character('u0007')eThe escape character ('u001B')cxThe control character corresponding tox Character classes[abc]a, b, or c (simpleclass)[^abc]Any character except a, b,or c (negation)[a-zA-Z]a through z or Athrough Z, inclusive (range)[a-d[m-p]]a through d, or mthrough p: [a-dm-p] (union)[a-z&&[def]]d, e, or f(intersection)[a-z&&[^bc]]a through z, except forb and c: [ad-z] (subtraction)[a-z&&[^m-p]]a through z, and notm through p: [a-lq-z](subtraction)Construct  Matches 【匹配】
Characters
          The character x
          Thebackslash character
        The character with octal value 0n (0 <= n<= 7)
nn        The character with octal value 0nn (0 <= n<= 7)
mnn       The character with octal value 0mnn (0 <= m<= 3, 0 <= n <=7)
xhh        The character with hexadecimal value 0xhh
uhhhh      The character with hexadecimal value 0xhhhh
         The tab character ('u0009')
          Thenewline (line feed) character ('u000A')
          Thecarriage-return character ('u000D')
         The form-feed character ('u000C')
         The alert (bell) character ('u0007')
         The escape character ('u001B')
cx         The control character corresponding to x
 
Character classes
[abc]    a, b, or c (simple class)
[^abc]    Anycharacter except a, b, or c (negation)
[a-zA-Z]     a through z or A through Z, inclusive (range)
[a-d[m-p]]    a through d, or m through p: [a-dm-p] (union)
[a-z&&[def]]   d, e, or f (intersection)
[a-z&&[^bc]]   a through z, except for b and c: [ad-z](subtraction)
[a-z&&[^m-p]]    a through z, and not m through p:[a-lq-z](subtraction)
 
Predefined character classes
   Any character (may or may not matchline terminators) 【如何字符】
   A digit:[0-9]
   Anon-digit: [^0-9]
   Awhitespace character: [ tnx0Bfr]
   Anon-whitespace character: [^s]
   A wordcharacter: [a-zA-Z_0-9]
   A non-wordcharacter: [^w]
 
POSIX character classes (US-ASCII only)
p{Lower}    Alower-case alphabetic character: [a-z]
p{Upper}    Anupper-case alphabetic character:[A-Z]
p{ASCII}    AllASCII:[x00-x7F]
p{Alpha}    Analphabetic character:[p{Lower}p{Upper}]
p{Digit}    Adecimal digit: [0-9]
p{Alnum}    Analphanumeric character:[p{Alpha}p{Digit}]
p{Punct}   Punctuation: One of!"#$%&'()*+,-./:;<=>?@[]^_`{|}~
p{Graph}    Avisible character: [p{Alnum}p{Punct}]
p{Print}    Aprintable character: [p{Graph}x20]
p{Blank}    Aspace or a tab: [ t]
p{Cntrl}    Acontrol character: [x00-x1Fx7F]
p{XDigit}   A hexadecimal digit:[0-9a-fA-F]
p{Space}    Awhitespace character: [ tnx0Bfr]
 
java.lang.Character classes (simple java character type)
p{javaLowerCase}   Equivalent tojava.lang.Character.isLowerCase()
p{javaUpperCase}   Equivalent tojava.lang.Character.isUpperCase()
p{javaWhitespace}   Equivalentto java.lang.Character.isWhitespace()
p{javaMirrored}   Equivalent tojava.lang.Character.isMirrored()
 
Classes for Unicode blocks and categories
p{InGreek}    Acharacter in the Greek block (simple block)
p{Lu}        An uppercase letter (simple category)
p{Sc}        A currency symbol
P{InGreek}   Any character except one in the Greek block (negation)
[p{L}&&[^p{Lu}]] Any letter except an uppercase letter (subtraction)
 
Boundary matchers
^ The beginning of a line
$ The end of a line
b A word boundary
B A non-word boundary
A The beginning of the input
G The end of the previous match
Z The end of the input but for the final terminator, if any
z The end of the input
 
Greedy quantifiers
X?    X,once or not at all
X*    X, zero or more times
X+    X,one or more times
X{n}   X,exactly n times
X{n,}  X,at least n times
X{n,m} X,at least n but not more than m times
 
Reluctant quantifiers
X??    X, onceor not at all
X*?    X, zeroor more times
X+?    X, one ormore times
X{n}?    X,exactly n times
X{n,}?    X, atleast n times
X{n,m}?    X, atleast n but not more than m times
 
Possessive quantifiers
X?+    X, onceor not at all
X*+    X, zeroor more times
X++    X, one ormore times
X{n}+    X,exactly n times
X{n,}+    X, atleast n times
X{n,m}+    X, atleast n but not more than m times
 
Logical operators
XY X followed by Y
X|Y Either X or Y
(X) X, as a capturing group
 
Back references
n Whatever the nth capturing group matched
 
Quotation
Nothing, but quotes the following character
Q Nothing, but quotes all characters until E
E Nothing, but ends quoting started by Q
 
Special constructs (non-capturing)
(?:X)  X, as a non-capturing group
(?idmsux-idmsux)  Nothing, but turns match flags id m s u x on - off
(?idmsux-idmsux:X)   X, as anon-capturing group with the given flags i d m s u x on - off
(?=X)   X, via zero-widthpositive lookahead
(?!X)   X, via zero-widthnegative lookahead
(?<=X)   X, viazero-width positive lookbehind
(?<!X)  X, via zero-width negativelookbehind
(?>X)  X, as an independent,non-capturing group
原创粉丝点击