正则表达式获得前n个字符忽略空格

时间:2015-12-12 08:39:54

标签: php regex

我找到了一个如何使用正则表达式剪切文本的解决方案。

^(?=((?:.*?\S){40})) // GET FIRST 40 CHARACTERS (IGNORING SPACES)

Fron:Extract n-character substring while ignoring spaces

问题是如果我输入了这个:asdgfhtjshhhhhhhhhasdasdasdass asd,则没有提取任何内容。

以下是regex101链接:https://regex101.com/r/fM9lY3/5#javascript

3 个答案:

答案 0 :(得分:1)

您可以简单地使用以下正则表达式:

^(\s*\S){1,40}

您不需要先行断言,只需将零个或多个空格字符和非空格字符放入捕获组即可。然后尾随量词将确保它最多发生40次。这里的关键是可选空间。

试一试:https://regex101.com/r/fM9lY3/40

答案 1 :(得分:0)

这是因为{40}表示完全 40,并且您输入的文字少于40个字符。试试{1,40}(意思是1到40):

^(?=((?:.*?\S){1,40})) 

答案 2 :(得分:0)

这个只使用了一小部分正则表达式,但它可以正常工作

DatabaseOpenHelper