php在正则表达式的字符串中查找#

I have a php variable where I need to show #value Values as link pattern. The code looks like this.

$reg_exUrl = "/\#::(.*?)/";

 // The Text you want to filter for urls
$text = "This is a #simple text from which we have to perform #regex    operation";

// Check if there is a url in the text
   if(preg_match($reg_exUrl, $text, $url)) {

   // make the urls hyper links
    echo preg_replace($reg_exUrl, '<a href="'.$url[0].'" rel="nofollow">'.$url[0].'</a>', $text);

   } else {

   // if no urls in the text just return the text
     echo "IN Else #$".$text;

 }

$reg_exUrl = "/\#::(.*?)/";

This doesn't match because of the following reasons

1. there is no need to escape #, this is because it is not a special character.

2. since you want to match just # followed by some words, there is no need for ::

3. (.*?) tries to match the least possible word because of the quantifier ?. So it won't match the required length of word you need.

If you still want to go by your pattern, you can modify it to

$reg_exUrl = "/#(.*?)\w+/" See demo

But a more efficient one that still works is

$reg_exUrl = "/#\w+/". see demo

By using \w, you can match a word contains alphanumeric characters and underscore. Change your expression with this:

$reg_exUrl = "/#(.*?)\w+/"

It's not clear to me exactly what you need match. If you want to replace a # followed by any word chars:

$text = "This is a #simple text from which we have to perform #regex    operation";

$reg_exUrl = "/#(\w+)/";
echo preg_replace($reg_exUrl, '<a href="$0" rel="nofollow">$1</a>', $text);

//Output:
//This is a <a href="#simple" rel="nofollow">simple</a> text from which we have to perform <a href="#regex" rel="nofollow">regex</a>    operation

The replacement uses $0 to refer to the text matched and $1 the first group.