所以,我会先发布一些代码:
$output = preg_replace([
'/#(.*?)/i'
], [
'<h1>$1</h1>'
], "#Input");
最终输出:
<h1></h1>
Input
在HTML OPT中,输入<h1>Input</h1>
时我想要实现的输出为#Input
,类似于Markdown
,但这适用于基本的编辑系统。
我查看了Regex Debugger
(here),调试/堆栈跟踪是第一组没有任何内容,索引组是#
。
据我所知,唯一被采取并分组的事情(我被告知这一点)是( ... )
,而left -> right
来自$1 -> $x
的组被标记为$.getScript("//" + @shortName + ".disqus.com/count.js")
。
对于过度使用的REGEX问题感到抱歉。
答案 0 :(得分:3)
你有额外的&#34;?&#34;在你的正则表达式。
尝试:
if(x < a && x > b || x > a && x < b) {
count++;
System.out.println("Count value:" + count);
}
由于你没有匹配任何单词字符,因此不区分大小写不太有意义,所以你可以写:
$output = preg_replace([
'/#(.*)/is'
], [
'<h1>$1</h1>'
], "#Input");
当然,如果这是实际的解决方案,我会尝试在匹配定义上稍微缩小一些(取决于您的实际要求)。 E.g:
$output = preg_replace([
'/#(.*)/s'
], [
'<h1>$1</h1>'
], "#Input");
答案 1 :(得分:1)
这里的问题是延迟点匹配模式在模式的末尾出现,并且因为它不必匹配任何文本,所以它不会。您的正则表达式与#
匹配,并将空字符串捕获为第1组。
如果你想真正匹配某些东西,请使用,比如说
'/#(\S+)/'
匹配#
并将1个或多个非空白字符捕获到组1中。
而不是\S+
,您可能希望使用更受限制的模式(例如\w+
用于1个或多个字符,[^<]+
以匹配除{{1}以外的1个或多个字符}}或<
匹配除空格和[^\s<]+
之外的1个字符。