⑴ 如何用正則表達式只提取字元串中位於後面的連續數字
我來提供個思路:
1、先通過替換功能,將正則表達式(^>.*<name>)\r\n替換為\1,將數字和<name>放到同一行
2、再用正則表達式提取出數字
⑵ 正則表達式提取數字
^=\d{10}=$
⑶ 求一個或兩個正則表達式,提取這段代碼里的數字
<?php
$str = <<<EOT
GigabitEthernet2/3 is up, line protocol is up (connected)
Hardware is 1000Mb 802.3, address is 001f.6d1b.e400 (bia 001f.6d1b.e400)
Description: NEW_to_NE20
Internet address is 192.168.1.1/12
MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec,
reliability 255/255, txload 7/255, rxload 5/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Full-plex, 1000Mb/s, media type is SX
input flow-control is off, output flow-control is on
Clock mode is auto
ARP type: ARPA, ARP Timeout 04:00:00
Last input 00:00:01, output 00:00:01, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/168/168 (size/max/drops/flushes); Total output drops: 66
Queueing strategy: fifo
Output queue: 0/40 (size/max)
5 minute input rate 19802000 bits/sec, 5791 packets/sec
5 minute output rate 30458000 bits/sec, 5972 packets/sec
L2 Switched: ucast: 1853118 pkt, 177980905 bytes - mcast: 57932 pkt, 3707648 bytes
L3 in Switched: ucast: 56306228298 pkt, 20771285750237 bytes - mcast: 0 pkt, 0 bytes mcast
L3 out Switched: ucast: 70473614094 pkt, 72715904553757 bytes mcast: 0 pkt, 0 bytes
56311433744 packets input, 20772032140156 bytes, 0 no buffer
Received 57932 broadcasts (0 IP multicasts)
1 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored
0 watchdog, 0 multicast, 0 pause input
0 input packets with dribble condition detected
70478943026 packets output, 72716442212721 bytes, 0 underruns
0 output errors, 0 collisions, 1 interface resets
0 babbles, 0 late collision, 0 deferred
0 lost carrier, 0 no carrier, 0 PAUSE output
0 output buffer failures, 0 output buffers swapped out
EOT;
preg_match_all("/(\d+)\s+bits\/sec|(\d{1})\s+input\s+errors|(\d{1})\s+output\s+errors/",$str,$arr);
print_r( $arr );
?>
測試通過~O(∩_∩)O~
⑷ 在SQL語句中如何用正則取出一個字元串的前幾位數字
SQL 取字元串的前幾位數字,SQL 關鍵字 substring
substring 使用方法,參考下列SQL:
declare @T nvarchar(10)
set @T='12345abcde'
select substring(@T,1,5)
結果如下:12345
如果是SQL 寫正則表達式判斷,只能通過存儲過程或函數來處理
SQL 如下:
CREATE FUNCTION dbo.find_regular_expression
(
@source varchar(5000), --需要匹配的源字元串
@regexp varchar(1000),--正則表達式
@ignorecase bit = 0--是否區分大小寫,默認為false
)
RETURNS bit--返回結果0-false,1-true
AS
BEGIN
--0(成功)或非零數字(失敗),是由 OLE 自動化對象返回的 HRESULT 的整數值。
DECLARE @hr integer
--用於保存返回的對象令牌,以便之後對該對象進行操作
DECLARE @objRegExp integer DECLARE @objMatches integer
--保存結果
DECLARE @results bit
/*
創建 OLE 對象實例,只有 sysadmin 固定伺服器角色的成員才能執行 sp_OACreate,並確定機器中有VBScript.RegExp類庫
*/
EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
/*
以下三個分別是設置新建對象的三個屬性。下面是'VBScript.RegExp'中常用的屬性舉例:
Dim regEx,Match,Matches '建立變數。
Set regEx = New RegExp '建立一般表達式。
regEx.Pattern= patrn '設置模式。
regEx.IgnoreCase = True '設置是否區分大小寫。
regEx.Global=True '設置全局可用性。
set Matches=regEx.Execute(string) '重復匹配集合
RegExpTest = regEx.Execute(strng) '執行搜索。
for each match in matches '重復匹配集合
RetStr=RetStr &"Match found at position "
RetStr=RetStr&Match.FirstIndex&".Match Value is '"
RetStr=RetStr&Match.Value&"'."&vbCRLF Next
RegExpTest=RetStr
*/
EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
--調用對象方法
EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
--釋放已創建的 OLE 對象
EXEC @hr = sp_OADestroy @objRegExp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
RETURN @results
END
⑸ 如何用正則表達式提取一串數字,數字中間有空格,詳情見下面
不清楚這串文字之外還有其他什麼文字。
如果字元串只有這些字元,完全沒有必要用正則吧,
(1)先用替換方法 將空格「 」替換為空串「」
(2)再將字元串逆序。
程序不同,函數不一樣。
例如,Perl中最簡單:
$a= reverse qw/2 2 0 5 0 9 0 0 6 0/;
print $a;
直接就得到了去掉空格並且從後往前的 字元串。
⑹ 正則表達式,提取指定數字
批發(d+),括弧里捕捉的就是你要的數據
⑺ 請問如何用正則表達式提取出文本中<name>後面的數字(
要用PilotEdit (不是Lite版)
用這個正則表達式來提取:
<name>*$[ ][ ][0-9]+[|!0-9]*$
%05
⑻ 如何用正則表達式提取指定位數內容
原理:匹配需要匹配第N個數字時,(數字+非數字)N-1次+數字,最後的數字即為結果。提取第四個數字(?:\d+[^\d\r\n]+){3}(\d+).*\b{3}的3=4-1提取第二個數字:(?:\d+[^\d\r\n]+){1}(\d+).*\b{1}的1=2-1如果上面數值提取是一行一次匹配