提问人:Joshua Loo 提问时间:8/26/2023 最后编辑:SammitchJoshua Loo 更新时间:8/26/2023 访问量:54
如何将标题正则表达式显示出来?
How do I regex just the title out?
问:
示例文本:
1. Medium Size +CA $33.00
2. Small Size -CA $4.00
我希望结果只是“中等尺寸”或“小尺寸”,使用preg_match
因此,正则表达式应该检测“-”或“+”符号,然后只给我没有价格/货币的文本输出
试
(\S+)
(\S+\s+)
答:
0赞
Stas Trefilov
8/26/2023
#1
此正则表达式应提取第一个字段 () 和最后两个字段之间的标题,并用空格 () 分隔:1.
+CA $33.00
/^\S+ (.+) \S+ \S+$/
要一次捕获所有字幕,请使用并标记:preg_match_all()
m
<?php
$txt = '1. Medium Size +CA $33.00
2. Small Size -CA $4.00
3. Extra-Large Size -CA $44.00';
preg_match_all('/^\S+ (.+) \S+ \S+$/m', $txt, $m);
print_r($m[1]);
0赞
The fourth bird
8/26/2023
#2
使用 php,你可以利用 来忘记到目前为止匹配的内容,然后只得到 or 符号之前的部分的匹配\K
+
-
^\d+\.\h+\K[^\n+-]*[^\s+-]
解释
^
字符串的开头\d+\.
匹配 1+ 位数字,后跟.
\h+\K
匹配 1+ 水平空格字符,然后忘记到目前为止使用匹配的内容\K
[^\n+-]*
匹配 or 或换行符以外的可选字符+
-
[^\s+-]
匹配至少一个非空格字符,而不是 或+
-
如果应该存在 or 符号,则可以断言它:+
-
^\d+\.\h+\K[^\n+-]*[^\s+-](?=\h*[+-])
或者,作为替代方案,从组 1 中尽可能少的字符开始并捕获尽可能少的字符,直到第一次出现 1+ 空格,然后是 or\S+
+
-
^\S+\h+(.+?)\h+[+-]
下一个:如何使用正则表达式捕获重复信息
评论
[+-].*
+
-
Extra-Large
-
*[^\s+-]
Medium Size +CA $33.00
Small Size -CA $4.00