Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将包含通配符的字符串转换为regexp_Regex_Pcregrep - Fatal编程技术网

将包含通配符的字符串转换为regexp

将包含通配符的字符串转换为regexp,regex,pcregrep,Regex,Pcregrep,我需要用regexp转换包含通配符的字符串 例如,如果我有如下输入字符串: ab*dd*c 这意味着 ab(任意字符数)d(任意字符数)c 其中,任何字符是任何字母数字字符或“\u1” 我尝试过以下方法: 'ab([:alnum].'''.''''.''''.''''.'''.'''.'''.'''.'''.'''.'c' 但是,正如您所看到的,例如,([[:alnum]]\\\\'*也匹配d,因此,我无法获得所需的匹配 我想到的是使用如下内容: 'ab[^d]*dd[^c]*c' 还有更好的解

我需要用regexp转换包含通配符的字符串

例如,如果我有如下输入字符串:

ab*dd*c

这意味着

ab(任意字符数)d(任意字符数)c

其中,
任何字符
是任何字母数字字符或“\u1”

我尝试过以下方法:

'ab([:alnum].'''.''''.''''.''''.'''.'''.'''.'''.'''.'''.'c'

但是,正如您所看到的,例如,
([[:alnum]]\\\\'*
也匹配
d
,因此,我无法获得所需的匹配

我想到的是使用如下内容:

'ab[^d]*dd[^c]*c'

还有更好的解决办法吗


提前谢谢

您可以使用此正则表达式:

/ab\w*?dd\w*?c/

\w*?
将匹配任何字母数字字符或非贪婪字符。

是的,但我的问题不同。使用你的正则表达式,这个
[\p{L}\uu]*
也将匹配
dd
,我们将无法获得所需的匹配项。谢谢,@anubhava,它正在工作。我的意思是这个
([:alnum]].''.'''.''.''.'.*
正则表达式的一部分与整个单词匹配,因此,
dd
没有匹配。甚至可以这样写:
[:alnum:][unum:][unum]*?
但是
\w*?
较短。
[:alnum:][u]*?
不起作用,但是
\w*?
可以:)