Q53 表示數值的字串python 正規表示式

2021-10-04 13:25:44 字數 3470 閱讀 1486

題目描述

請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100",「5e2」,"-123",「3.1416"和」-1e-16"都表示數值。 但是"12e",「1a3.14」,「1.2.3」,"±5"和"12e+4.3"都不是。

列舉邊界情況:

# -*- coding:utf-8 -*-

class

solution

:# s字串

defisnumeric

(self, s)

:# write code here

if s.count(

'.')

>1:

return

false

if s in

['+-'

,'-+'

,'-'

,'+'

,'.']:

return

false

for i in

range

(len

(s))

:if s[i]

notin

['0'

,'1'

,'2'

,'3'

,'4'

,'5'

,'6'

,'7'

,'8'

,'9'

,'+'

,'-'

,'e'

,'.'

,'e']:

return

false

if s[i]

=='e'

or s[i]

=='e':if

(i==

len(s)-1

)or s.count(

'.',i,

len(s)-1

)>0:

return

false

if(s[i]

=='+'

or s[i]

=='-'

)and i>0:

if(s[i-1]

=='e')or

(s[i-1]

=='e'):

continue

else

:return

false

return

true

# -*- coding:utf-8 -*-

class

solution

:# s字串

defisnumeric

(self, s)

:# write code here

try:

float

(s)return

true

except

:return

false

正規表示式:

關於正規表示式python 中用re模組

.                    匹配任意字元(不包括換行符)

^ 匹配開始位置,多行模式下匹配每一行的開始

$ 匹配結束位置,多行模式下匹配每一行的結束

* 匹配前乙個元字元0到多次

+ 匹配前乙個元字元1到多次

? 匹配前乙個元字元0到1次

匹配前乙個元字元m到n次

\\ 轉義字元,跟在其後的字元將失去作為特殊元字元的含義,例如\\.只能匹配.,不能再匹配任意字元

字符集,乙個字元的集合,可匹配其中任意乙個字元

| 邏輯表示式 或 ,比如 a|b 代表可匹配 a 或者 b(.

..) 分組,預設為捕獲,即被分組的內容可以被單獨取出,預設每個分組有個索引,從 1 開始,按照"("的順序決定索引值

(?ilmsux) 分組中可以設定模式,ilmsux之中的每個字元代表乙個模式,用法參見 模式 i

(?:...

) 分組的不捕獲模式,計算索引時會跳過這個分組

(?p..

.) 分組的命名模式,取此分組中的內容時可以使用索引也可以使用name

(?p=name) 分組的引用模式,可在同乙個正規表示式用引用前面命名過的正則

(?#...) 注釋,不影響正規表示式其它部分,用法參見 模式 i

(?=...

) 順序肯定環視,表示所在位置右側能夠匹配括號內正則

(?!...

) 順序否定環視,表示所在位置右側不能匹配括號內正則

(?<=..

.) 逆序肯定環視,表示所在位置左側能夠匹配括號內正則

(?) 逆序否定環視,表示所在位置左側不能匹配括號內正則

(?(id

/name)yes|no) 若前面指定id或name的分割槽匹配成功則執行yes處的正則,否則執行no處的正則

\number 匹配和前面索引為number的分組捕獲到的內容一樣的字串

\a 匹配字串開始位置,忽略多行模式

\z 匹配字串結束位置,忽略多行模式

\b 匹配位於單詞開始或結束位置的空字串

\b 匹配不位於單詞開始或結束位置的空字串

\d 匹配乙個數字, 相當於 [0-

9]\d 匹配非數字,相當於 [^0

-9]\s 匹配任意空白字元, 相當於 [ \t\n\r\f\v]

\s 匹配非空白字元,相當於 [

^ \t\n\r\f\v]

\w 匹配數字、字母、下劃線中任意乙個字元, 相當於 [a-za-z0-9_]

\w 匹配非數字、字母、下劃線中的任意字元,相當於 [

^a-za-z0-9_]

# -*- coding:utf-8 -*-

import re

class

solution

:# s字串

defisnumeric

(self, s)

:# write code here

return re.match(r"^[\+\-]?[0-9]*(\.[0-9]*)?([ee][\+\-]?[0-9]+)?$"

,s)

53 表示數值的字串

請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。正規表示式 字元集合 分組 重複 0 1 次 重複 1 n 次 重複 0 n 次 任意字元 轉...

53 表示數值的字串

題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。class solution 幾個關鍵點 1.基本邊界。string null st...

53 表示數值的字串

題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。分析 表示數值的字串模式 sign integral digits fraction...