正则表达式检查是否存在确切的字符串,包括#

时间:2010-05-13 15:26:02

标签: php regex

新问题正如Asaph在上一个问题中提出的:Regex to check if exact string exists

我正在寻找一种方法,使用Regex或建议的任何更好的方法检查另一个字符串中是否存在精确的字符串匹配。我知道你告诉正则表达式匹配字符串开头或结尾的空格或任何其他非单词字符。但是,我不确切知道如何设置它。

搜索字符串:#t

应该匹配:
字符串1:Hello World, Nice to see you! #t
字符串2:#T Hello World, Nice to see you!
字符串3:Hello World, #t Nice to see you!

不应匹配:
字符串1:Hello World, Nice to see you!
字符串2:Hello World, Nice to see you! #ta
字符串3:#tHello World, Nice to see you!

编辑2:添加了更多字符串示例

为Serg555和SilentGhost编辑1:
搜索字符串中允许的字符:
#[_a-zA-Z0-9]
#是可选的。

要求: 搜索字符串可以位于主题中的任何字符位置。 在它之前或之后可能存在或不存在空白字符。 如果它是另一个字符串的一部分,我不希望它匹配;比如一个词的一部分。

为了这个问题:我想我会这样做:/\b\#t\b/gi
但是,这并没有像我预期的那样返回结果。

我可以使用:

找到普通字符串(#不存在的字符串)的完全匹配

/\b{$search_string}\b/gi

其他信息:这将在PHP 5中使用

2 个答案:

答案 0 :(得分:5)

您只需要:

/(?:^|\s)#t\b/i           #t is in the beginning or preceded by space.

\b匹配单词边框,单词边框是单词字符和非单词字符之间的边框。 #是一个非单词字符,因此您的正则表达式只匹配这样的字符串:abc#tab_#t

此外,通常#不是正则表达式中的特殊字符,您无需转义它。

ETA :您的要求相当模糊:在它之前或之后可能有也可能没有空格字符。如果它是另一个字符串的一部分,我不希望它匹配;比如一个单词的一部分。

  1. 之前或之后没有空白字符?所以会有一个非空白字符?
  2. 但它是如何与其他字符串分开的呢?允许哪些字符?
  3. 我认为您需要提供可能的输入字符串的全面示例。因为,正如我的正则表达式一样正常。

答案 1 :(得分:0)

尝试/(?!\b)#t\b/si