[英]PHP Regex to find a specific substring
所以基本上,我有一個包含一些其他信息的大字符串,在最后的某個地方,我有以下字符串結構:
62AC979D-5277D720
它是數字和大寫字母。 我想從大字符串的許多行中提取這個子字符串,這些字符串都在不同的地方包含它。 我試過了:
preg_match('/^[\w]+$/', $string);
但我真的沒有太多的正則表達式經驗。 有人可以提供必要的正則表達式,或者至少告訴我我錯在哪里? 感謝您的時間!
這個正則表達式應該為你做,
([A-Z\d]{8}-[A-Z\d]{8})
正在使用
<?php
$string = 'This is 62AC979D-5277D720 the whole string.';
preg_match_all('~([A-Z\d]{8}-[A-Z\d]{8})~', $string, $value);
print_r($value[1]);
由於^
和$
我懷疑您當前的正則表達式失敗。 這些標記您正在搜索的字符串的開始和結束(如果使用了m
修飾符,則為行)。 \\w
也是az
, AZ
, 0-9
和_
。 我認為您只關心大寫字母並且您只想允許一個破折號。 如果目標也總是只有 8 個字符,您可以添加{8}
代替+
。 ()
用於捕獲找到的值。 $string
第一個找到的值將是$value[1][0]
。
演示: http : //sandbox.onlinephpfunctions.com/code/c6b2c391d95c5454a3c7ea81d5ac4a3bb8e49aef
preg_match_all('/\\b[0-9A-Z]+-[0-9A-Z]+\\b/')
這應該為你做。
preg_match('/\\b[0-9A-Z]{8}-[0-9A-Z]{8}\\b/', $string);
這適用於您提供的字符串,即 8 個數字或字母后跟 - 然后再次數字和字母
你試試這個。
preg_match('/^[0-9A-Z]{8}-[0-9A-Z]{8}$/', $string)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.