正規表示式問題,正規表示式問題(需要通用)

2022-07-27 16:20:18 字數 3790 閱讀 9184

1樓:匿名使用者

(?<=)

這樣不知道 是不是你想要的

2樓:匿名使用者

首先你給的xml是不規範的。硬要匹配的話,可以試試下面的(你要的字串在group[1]中)

3樓:匿名使用者

性和閏年等問題.....

對於日期的有效範圍,不同的應用場景會有所不同。msdn中定義的datetime物件的有效範圍是:0001-01-01 00:

00:00到9999-12-31 23:59:

59。unix時間戳的0按照iso 8601規範為 :1970-01-01t00:00:00z。

先考慮與年份無關的前三條規則,年份可統一寫作

(?!0000)[0-9]

下面僅考慮月和日的正則

1. 包括平年在內的所有年份的月份都包含1-28日

(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])

2. 包括平年在內的所有年份除2月外都包含29和30日

(0[13-9]|1[0-2])-(29|30)

3. 包括平年在內的所有年份1、3、5、7、8、10、12月都包含31日

(0[13578]|1[02])-31)

合起來就是除閏年的2月29日外的其它所有日期

(?!0000)[0-9]-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)

接下來考慮閏年的實現

1 : 四年一閏

([0-9](0[48]|[2468][048]|[13579][26])

2 : 百年不閏,四百年再閏

(0[48]|[2468][048]|[13579][26])00

3 : 合起來就是所有閏年的2月29日

([0-9](0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)

四條規則都已實現,且互相間沒有影響,合起來就是所有符合datetime範圍的日期的正則

^((?!0000)[0-9]-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9](0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$

考慮到這個正規表示式僅僅是用作驗證,所以捕獲組沒有意義,只會佔用資源,影響匹配效率,所以可以使用非捕獲組來進行優化。

^(?:(?!0000)[0-9]-(?:

(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:

0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:

[0-9](?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$

正規表示式問題

4樓:刑詩壘

刷到了就幫樓主回答下:

/:"?([\u4e00-\u9fa5\d\w]+)"?/g

望採納!

正規表示式問題。

5樓:匿名使用者

c#測試通過。

static string regextest()

//output 中的內容是:今天(週二) 2 7

正規表示式問題(需要通用)

6樓:匿名使用者

我覺得此處不應該使用正規表示式,正規表示式最大的功能是用來匹配驗證的。對於你的需求不如寫一個方法,無論是用js直接前端處理還是提交給後臺用其他語言處理完成之後給你返回結果都是可行的。

那麼處理方法就應該是這樣的:

1、驗證非法字元,此處可以用正規表示式,只匹配數字和運算子號2、將輸入框中的字串呼叫split方法先用「,」,再用「+」分隔,最後用「*」分隔。得到若干陣列,根據陣列的順序來得到乘數和被乘數。例如第一種情況,第一次分隔後的結果為:

,,},再次分隔後,結果為:,},,},}},最後一次分隔:,},,},}}。

奇數位都是你需要的數字,偶數位是你需要的多少次。通過迴圈遍歷陣列就轉換出來了。

這是最直接死板的辦法。只限於你這種情況,比如要再有10*5*2這種就又得再加邏輯判斷了。

正規表示式的問題

7樓:緋彈亞絲娜

(.*?)

首先,整個正規表示式匹配的是:

class為corinfo的b標籤中,a標籤的href屬性和文字,分別捕獲到分組1和分組2當中。

舉例:www.baidu.

com" >baiduwww.bing.com" >bing兩個都可以匹配,分組1(\1)分組2(\2)分別捕獲到www.

com bing解釋:#匹配

(.*?) #同上,捕獲a標籤的文字

#匹配標籤結尾

8樓:飛翔的龍

懶惰模式 匹配除換行符的任意字串 匹配到一次就結束

關於正規表示式中的(?:)問題

9樓:

樓主誤解了(?:)的意義,(?:)是相對於()的一個概念。

()的意思有兩個,一個有的書上叫記憶,就是把匹配的字元儲存在暫存器裡,以備後用,另一個意思是分組,所以()又叫記憶分組。而(?:)只有分組的功能,分組的意思是把組內的部分看成是同一個物件對待,比如一個字串,經常用來分割並列邏輯(就是'|')。

所以分組符號只是不把匹配內容放到暫存器裡,他裡邊的內容還是要匹配的。舉個例子,比如我要匹配這樣一個字串,它由三個數字字元組成,而且第一個和第三個字元相同,這就需要記憶分組了:"(\d)\d\1",這裡的\d 表示數字字元,這句話的意思是,首先匹配一個數字字元並把它記到暫存器讓後再匹配下一個數字,最後尋找和的一個字元相同的數字字元,這裡的\1表示第一個被記憶的分組。

所以"(\d)(\d)\2\1"就表示首末相同的四數字字串。如果想匹配三個連續的數字字元那麼:"(\d\d\d)"和"(?:

\d\d\d)"都可以達到要求,唯一的區別就是第二個方法沒有將匹配內容儲存。很顯然引入(?:)就是為了在只需要分組的情況下減少cpu資源的消耗。

如果要實現部分匹配可以利用環視,樓主的第一個方程可以這麼寫:(?<=the )white(?

= queen,)

正規表示式,的問題?

10樓:匿名使用者

reg就是那個字串,內容是"([^\\d]+)(\\d+)(克|個)())?(,)?",它就是那個內容。

$1是第一個括號匹配的部分即([^\\d]+),意思是非數字且至少一個字元

$2是第二個括號匹配的部分(\\d+),意思是至少一個數字$3匹配 "克"或者"個"

$4匹配右邊的中文圓括號

整個reg表達的這樣一種匹配:

以至少一個非數字字元開始,接著是至少一個數字,然後是克或者個,然後是右邊圓括號(可有可無),然後是中文逗號,(可有可無)

那麼s裡面所有類似 花生仁500克這樣的都匹配這個表示式。

正規表示式怎麼匹配這樣的文字,正規表示式怎麼匹配標點符號

正則表達 括號中的捕獲內容就是 正規表示式怎麼匹配標點符號?如何用正規表示式匹配漢字?先用靚湯或正則找到這個節點,再用上面的字元組匹配。假設這個節點只有一個,用法如下 import reimport requests as reqfrom bs4 import beautifulsoupurl ht...

易語言正規表示式的中的正規表示式文字怎麼取的

易語言不支援逆向斷言,所以你只能使用分組。取group 2 即可,具體易語言怎麼取正則的分組請自己參考易語言的api 上面文字,中兩個人對話 共同開始結束特徵 開始 結束 換行 給出表示式 就這樣,詳細的加q 版本2.支援庫 duregex 程式集 視窗程zhi序集1 子程式 按鈕1 被單擊 區域性...

易語言正規表示式,易語言中怎麼用正規表示式

版本 2 支援庫 regex 支援庫 spec 子程式 按鈕2 被單擊 區域性變數 表示式,正則表回達式 區域性變數 搜尋結答 果,搜尋結果,0 區域性變數 計次,整數型 區域性變數 臨時文字,文字型 區域性變數 內容陣列,文字型,0 表示式.建立 user number id s s 搜尋結果 表...