说我有以下字符串:
BlahBlah........1.000
Whatevah....2.000
Something......6.500
...也就是说,有些文字,后跟四个或更多点,后跟一个数字(可能有一个点作为分隔符),然后是换行符(Linux或Windows,我不知道这是否重要)。它是较大字符串的一部分。
如何将文本和数字提取到变量中?更确切地说是一对值对(数组数组)。我只是无法理解正则表达式...... :(
答案 0 :(得分:4)
使用this正则表达式:
(?<word>\w+)\.+(?<number>\d+(\.\d+)?)
preg_match_all()
:
preg_match_all("/(?<word>\w+)\.+(?<number>\d+(\.\d+)?)/", $yourString, $theArrayYouWantToStoreMatchesInIt);
要捕获4点后的任何内容,您可以使用this:
(?<word>\w+)\.{4,}(?<anything>.*)
following还将捕获第一部分中包含空格的字符串:
(?<beforeDots>[^\.]+)\.{4,}(?<afterDots>.*)
将匹配的文字限制在特定字符范围内以使regex更准确,这也是一个好主意:
(?<beforeDots>[a-zA-Z0-9 ]+)\.{4,}(?<afterDots>[a-zA-Z0-9\. ]+)