![](/img/trans.png)
[英]REGEX: How to match string that followed by space and contains specific char/symbol
[英]Regex to match a number followed by a specific string
我需要在另一個字符串中找到一個數字,后跟一個特定的字符串。
初始字符串可以是: some text 0.25mcg some more text some text 25mcg some more text
所以這個數字可能是一個小數。 我需要能夠返回數字(所以 0.25 或 25),其中數字后跟“mcg”
誰能幫我嗎。 這不起作用:
if(preg_match('(\d+mcg)', $item, $match))
另一種選擇是使用可選的小數部分\\d+(?:\\.\\d+)?
並使用單詞邊界\\b
來防止匹配成為更大單詞的一部分。
\b(\d+(?:\.\d+)?)mcg\b
代碼示例
$re = '/\b(\d+(?:\.\d+)?)mcg\b/';
$str = 'some text 0.25mcg some more text some text 25mcg some more text';
preg_match_all($re, $str, $matches);
print_r($matches[1]);
輸出
Array
(
[0] => 0.25
[1] => 25
)
如果您只想要匹配而不是捕獲組,您也可以選擇積極的前瞻(?=
代替。
\b\d+(?:\.\d+)?(?=mcg\b)
這是簡單的版本:
<?php
$item1 = 'some text 0.25mcg some more text';
$item2 = 'some text 25mcg some more text';
if (preg_match('/([0-9\\.]+)\\s*mcg/', $item1, $match)) echo $match[1] . '<br>';
if (preg_match('/([0-9\\.]+)\\s*mcg/', $item2, $match)) echo $match[1] . '<br>';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.