我有一个类型为anystring_OPCtarget_anystring的模式。我可以获得一些帮助,了解如何验证两个下划线之间的字符串是否属于类型"OPC(target)"并使用正则表达式提取目标。
假设我的字符串是:MP700000001_OPC32_812345643
首先,我需要验证下划线之间的字符串是否以以下开头,然后获取第二个下划线前后的OPC目标文本。OPC
帮助赞赏!
谢谢
小智 6
_([^_]+)_
Run Code Online (Sandbox Code Playgroud)
第一个捕获组是两个下划线之间的文本
解释:
_([^_]+)_
_ First underscore
( ) Capture group
[^ ] Everything but this character class
_ No underscores
+ One or more times
_ Closing underscore
Run Code Online (Sandbox Code Playgroud)
您可以使用这个正则表达式:
^[^_]*_OPC\K[^_]+
Run Code Online (Sandbox Code Playgroud)
并抓取匹配的数据。
^[^_]*_OPC将匹配先到_后跟 的任何文本OPC。\K将重置所有先前匹配的数据[^_]+将匹配OPC第 2 个之后的数据_代码:
$str = 'MP700000001_OPC32_812345643';
preg_match('/^[^_]*_OPC\K[^_]+/', $str, $matches);
echo $matches[0] . "\n";
//=> 32
Run Code Online (Sandbox Code Playgroud)