我需要在PHP正则表达式中匹配一个空格字符。任何人有任何想法吗?
我的意思是像“ gavin
schulz”一样,两个单词之间的空格。我使用正则表达式来确保只允许使用字母,数字和空格。但是我不确定如何找到空间。这就是我现在所拥有的:
$newtag = preg_replace("/[^a-zA-Z0-9s|]/", "", $tag);
如果您正在寻找一个空格,那就是" "
(一个空格)。
如果要查找一个或多个,则为" *"
( 两个 空格和一个星号)或" +"
(一个空格和一个加号)。
如果您要查找公共间距,请使用"[ X]"
或"[ X][ X]*"
或物理制表符"[ X]+"
在哪里X
(在所有这些示例中,每个符号前都有一个空格)。
这些将在我见过的 每一个 正则表达式引擎中都可以使用(其中有些甚至没有一个或多个"+"
字符ugh)。
如果您知道您将使用更现代的正则表达式引擎之一,那么"\s"
它的变化就是必经之路。另外,我相信单词边界也与行的开头和结尾匹配,这在您寻找可能不带空格的情况下很重要。
特别是对于PHP,此页面可能会有所帮助。
从您的编辑看来,您要删除所有无效字符的开始是(请注意正则表达式中的空格):
$newtag = preg_replace ("/[^a-zA-Z0-9 ]/", "", $tag);
# ^ space here
如果您还想通过技巧来确保每个单词之间只有一个空格,而开头或结尾都没有空格,那会有些复杂(可能还有另一个问题),但是基本思路是:
$newtag = preg_replace ("/ +/", " ", $tag); # convert all multispaces to space
$newtag = preg_replace ("/^ /", "", $tag); # remove space from start
$newtag = preg_replace ("/ $/", "", $tag); # and end
问题内容: 用于正则表达式的Java API 声明将匹配空格。因此,正则表达式应匹配两个空格。 这样做的目的是用单个空格替换两个连续空格的所有实例。但是,这实际上不起作用。 我对正则表达式或“空白”一词有严重的误解吗? 问题答案: 是的,你需要获取matcher.replaceAll()的结果:
下面是在线测试:regex101 下面是java测试: 下面是我测试的输出: 为什么匹配项2为空?在联机匹配器中,它对两者都正确匹配。 正则表达式字符串的说明:
我们得到了一些这样的内容:
有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。
主要内容:基本模式匹配,字符簇,确定重复出现基本模式匹配 一切从最基本的开始。模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如: 这个模式包含一个特殊的字符 ^,表示该模式只匹配那些以 once 开头的字符串。例如该模式与字符串 "once upon a time" 匹配,与 "There once was
问题内容: 正则表达式可以匹配空格 或 字符串的开头吗? 我正在尝试用英镑符号替换缩写为GBP的货币。我可以匹配任何以GBP开头的东西,但我想更加保守一些,并在它周围寻找某些定界符。 我可以同时做后两个例子吗? 问题答案: 使用OR“ ”运算符: