オファー-53を受賞。(C ++ / Java)の数値文字列を表します

トピック:

文字列が(整数および端数を含む)の値を表しているかどうかを決定するために使用される機能を実現します。例えば、文字列 "100"、 "5E2"、 " - 123"、 "3.1416" および "-1E-16" を示す値。しかし、 "12E"、 "1a3.14"、 "1.2.3"、 "+ - 5" と "12E + 4.3" もありません。

分析:

簡単にそれを行うには、正規表現を使用してください。

。「\ \ n」は1以外の任意の単一文字にマッチ「」、および一致するように含まれている「N [\ S \ S]」などの「任意の文字、などの使用パターンは」。

2.「^」:文字列の先頭が「^」文字そのものに一致するように、任意の文字に一致する一致しない、使用「\ ^」;

3.「$」は:「\ $」を使用し、任意の文字と一致しません「$」文字そのものに一致するように、文字列の入力端の位置にマッチします。

4. "*": "^ B"、例えば "\ ^ * B" マッチ "B" として、 "*" "{0}" に相当し、マッチが0回以上、または部分式は、文字の前、 "^^ B"、...;

「+」のようなマッチング一つ以上の前の文字または部分式、同等の「{1}」に、「+ B」一致「AB」、「AAB」、「AAAB」、... ;

6.「?」:一致する文字または部分式の前ZeroOrOneは、「(0,1)」に相当するようなマッチ「」、「AC」、「広告「CD]?」 ";場合は、この文字は直ちに他の修飾子" * "" + "" "" {N} "" {N} "" {N、M} "この後、一致パターン"?非貪欲。」「非貪欲」パターンマッチングが可能に短い文字列を検索するには、デフォルト「貪欲」パターンマッチングが可能に長い文字列を検索します。「?+ o」は、例えば、文字列「OOOO」は、単一の「O」と一致し、「O +」全て「O」と一致します。

7.「|」:論理的「または」(OR)操作2つの整合条件、正規表現「(彼|彼女)」としてマッチ「彼にitbelongs」と「それは彼女に属している」、とは一致しません」 「彼らにitbelongs。

8.「\」:次の文字は「\\」などの特殊文字、テキスト、または進言及逆脱出、としてマークされた「N」の文字にマッチします「N」、「\ n」は改行マッチングシーケンスれます試合 "\"、 "\(" マッチング "(";

9. "\ W":マッチング文字または数字または下線、任意の文字や数字または下線、すなわち、A〜Z、A〜Z、0〜9、_のいずれか。

10.「\ W」:任意の文字、数字、アンダースコア文字が一致しません。

11. "\ S":いずれか1つの空白文字は "[F \ n \ R \ T \ V \]" 等価等スペース、タブ、改ページを含む、任意の空白に一致し、そして、

12. "\ S":任意の空白文字と一致し、そして "[^ \ F \ n \ R \ T \ V]" 等価ではありません。

13.「\ D」:マッチング数字は、任意の数、0から9までのいずれか1つが、「[0-9]」に相当します。

14.「\ D」は:任意の数字以外の文字にマッチし、「[^ 0-9]」に相当します。

15.「\ B」:ER」のように、「ER \ B」一致として、場所と単語の間のスペースで単語とスペースとの間の位置に、任意の文字に一致しない、ある単語の境界を、「決して」と一致しません「ER「の」動詞「とは一致しません」。

16.「\ B」:「ER」があるが、「ER」に「決して」と一致しません「動詞」非単語境界のマッチング、「ER \ B」マッチ。

17.「\ F」:マッチがウェブサイトのページのために、「\ x0c」と「\ CL」に相当します。

18.「\ n」:「\ X0A」と「\ cJの」に相当改行を一致。

19. "\ R":キャリッジリターンマッチ、 "\ x0d" と "\ CM" に相当します。

20.「\ tは」:タブと一致し、それは「\ x09の」と「\ cIリ」に相当します。

21. "\ vが": "\ X0B" と "\ CK" と同等の垂直タブを、一致します。

22.「\ CX」:このようなCMはコントロール - Mまたはキャリッジリターンにマッチ\としてマッチ制御文字表示「X」、「X」の値は、「AZ」または「AZ」であっても、そうでない場合なければなりませんCは、「C」の文字自体を想定しています。

23.「{N}」:「n」は、正確にそのような一致しません「O」、しかし、2つの「食品」」の「O {2}」と「ボブ」のように、マッチング非負整数n回です一致の」o;

24.「{N}」:「foooood」「N」は、「O」の「O {2}」ミスマッチ「ボブ」として、少なくともn回一致するように、負でない整数であり、そして全ての一致で " O {1} O + "に相当する" "" O "" O {0}「* O "に相当します"。

25. "{N、M}": "N" および "M" は、 "O {1,3}、" マッチング "fooooood" として最もm回、で非負整数、N <= M、少なくとも一致n回です最初の三つのO、O '{0,1}と等価であると「O?」、スペースがコンマ数との間に挿入することができることに留意されたい。このような「BA {1,3}」と一致する「BA」として、または「BAA」または「baaa」。

26. "X | Y":マッチ "X" 又はような "Y"、 "Z |食品" に一致する "Z" または "食品"、| "zood" または "食品" に一致する "(Z F)OOD"。

27.「[XYZ]」:文字セット、いずれかの文字が含まれる一致ような「[ABC]」「」で一致「普通」。

28.「[^ XYZ]」:逆文字セットは、任意の文字含まれていないと一致し、「P」のような、「[^ ABC]」マッチ「普通」のように、「XYZ」以外の任意の文字にマッチします。

29.「[AZ]」のような文字の範囲を、指定された範囲内の任意の文字のマッチング、「[AZ]」マッチ「」小文字のいずれかに「Z」の範囲。

30.「[^ AZ]」:リバースレンジ文字ではなく、任意の文字に一致するように指定された範囲内で、このような、「[^ AZ]」任意「」任意の文字に「Z」の範囲と一致しません。

手順:

C ++

#include <正規表現>
 クラスソリューション{
 パブリックBOOL ISNUMERIC(CHAR * STR){
         ストリング S2 = " [\\ +、 - ] [0-9] *([\\。] [0-9] *)? - ([E、E] [\\ +、] [0-9] +?)?文字列 S1 = strの。
        リターンregex_match(S1、正規表現(S2)); 
    } 
}。

ジャワ

パブリック クラスソリューション{
     パブリック ブール ISNUMERIC(CHAR [] STR){ 
        文字列 = String.valueOf(STR)。
        リターン string.matches( "[\\ +、 - ] [0-9] *([\\。] [0-9] *)([E、E] [\\ +、 - ]???[0 ?-9] +)」); 
    } 
}

おすすめ

転載: www.cnblogs.com/silentteller/p/12096761.html
おすすめ