簡體   English   中英

正則表達式獲取字符串的版本

[英]Regex get version on the string

我想查詢Minecraft服務器並獲取其版本。 但是當我在版本中查詢服務器時,我得到了字符串:

BotFilter 1.8.x-1.12.x => I need get 1.12
BotFilter 1.8.x-1.12.x by hek.com Leymooo_s => I need get 1.12
Spigot 1.8.8 => I need get 1.8
Spigot 1.8.9 => I need get 1.8.9
BungeeCord 1.10-1.12x => I need get 1.12
Spigot 1.5.2 => I need 1.5.2
1.8.8 (Spigot) => I need get 1.8
1.9.2 Vanilla => 1.9
CraftBukkit 1.7.2 => I need get 1.7.2
BungeByGame 1.x-1.12.2 => I need get 1.12.2
Requires MC 1.8/1.9/1.10/1.11/1.12 => I need get 1.12
1.8.8 (CraftBukkit on Bukkit 1.8.8-R0.1-SNAPSHOT) => 1.8.8

我有正則表達式:

$version = '1.8.8 (Spigot)';

preg_match('~^.*[ -]\K\d+(?:\.\d+)*~m', $version, $result);

但不能在變量$version使用字符串..也許與其他字符串一起使用..

更新

在后面使用負號,以確保在數字后沒有剩余版本字符或英文字母:

^.*\K\d(?<![a-z\d.].)\d*(?:\.\d+)*+

現場演示

PHP代碼( 請參閱demo ):

$version = '1.8.8 (CraftBukkit on Bukkit 1.8.8-R0.1-SNAPSHOT)';
preg_match('~^.*\K\d(?<![a-z\d.].)\d*(?:\.\d+)*+~mi', $version, $result);
print_r($result[0]); // 1.8.8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM