我的RegEx写在这里,无论我如何改变它都不起作用,替换不是的字符。我有一个字符串列表,可能有3个单词或8个单词。当我们遇到某个字符或字符串时,是否有更简单的方法来切断RegEx? 让我告诉你我的意思: 以下是我将要处理的字符串的一些示例:
WKT8100 Cooperative Education Work Term Preparation 15 hrs/w
CST8259 Web Programming Languages II 5 hrs/w
CST8265 Web Security Basics 5 hrs/w
CST8267 Ecommerce 4 hrs/w
我想从字符串中仅提取课程名称和ID,并省去我需要的小时数,所以请留下:
WKT8100 Cooperative Education Work Term Preparation
作为回报。
我的RegEx目前是这样的:
RegEx = "/[a-zA-Z]{3}[0-9]{4}[A-Z]{0,1}\s[a-zA-Z]{3,20}\s[a-zA-Z]{0,20}\s[a-zA-Z]{0,20}\s[a-zA-Z]{0,20}\s/";
我是一个正确提取小时数的RegEx,所以如果有一个方法可以用于substr。这样我基本上可以在RegEx时间之前提取所有内容,而不必担心复杂的RegEx系列。:
HoursRegEx = "@\s[0-9]{1,2}?\shrs\/w@i";
答案 0 :(得分:3)
为什么不:
/(.*) \d+ hrs\/w/
这应该捕获x hrs/w
部分之前的所有字符。
对于更多解释,这只是创建一个捕获组,其中包含在查看之前找到的任何内容:空格,一个或多个数字,另一个空格,然后是序列“hrs / w”。既然你不关心最终部分之前是什么,为什么要尝试识别呢?
答案 1 :(得分:0)
如果它总是以“hrs / w”结尾,你可以这样做:
$string = "WKT8100 Cooperative Education Work Term Preparation 15 hrs/w";
$string = trim($string)
$lastSpace = strrpos($string, " ");
$string = trim(substr($string, 0, $lastSpace));
$lastSpace = strrpos($string, " ");
$hours = trim(substr($string, $lastSpace));
$nameID = trim(substr($string, 0, $lastSpace));
使用正则表达式,这是我的头脑。没有先做一些广泛的进修研究,我就不能给你任何正则表达式。
P.S。