繁体   English   中英

正则表达式匹配单,双无引号

Regex for matching single,double an no quotes

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我使用preg_replace函数,该函数必须清除$body所有reltarget属性,并将其替换为其他值。 这里是:

    $patterns = array();
    $patterns[] = '/<a(.*) rel="([^"]*)"(.*)>/';
    $patterns[] = '/<a(.*) target="([^"]*)"(.*)>/';
    $patterns[] = '/<a(.*)>/';

    $replacements = array();
    $replacements[] = '<a$1$3>';
    $replacements[] = '<a$1$3>';
    $replacements[] = '<a rel="nofollow" target="_blank"$1>';

    $body = preg_replace($patterns,$replacements,$body);

问题在于它与单引号和无引号不匹配。 另外,如果有更好的方法可以清除链接中的reltarget属性并与其他属性一起设置,请提出建议。

谢谢

编辑: $body

    $body = '<a href="TEST">Link1</a>
      <a href="TEST" rel=\'lqlqlq\'>Link2</a>
      <a href="TEST" target="_blank" rel="lqlqlq">Link3</a>
              <a href="TEST" target=_blank rel=lqlqlq>Link4</a>';

此外,由于文本,用于工作链接的其他所有选项都是用户定义的,可能有些用户会作弊。 我的目标-无论用户输入了什么, $body所有链接都具有定义的reltarget属性。

3 个回复

如果您不想同时匹配其他任何内容,建议您不要这样做,并保留系统资源。

$patterns[] = "/rel=[\"\']?([\w]+)[\"\']?/";
$patterns[] = "/target=[\"\']?([_a-zA-Z]+)[\"\']?/"

我不是REGEX的佼佼者,但据我所知,这将为您节省一些时间。

它很可能与它们匹配,但是由于<a(.*)>将始终匹配,无论前两个如何匹配,您都不会从前两个模式得到任何结果。

这可以满足您的需求:

$patterns = array();
$patterns[] = '/<a(.*) rel=[\'"]?\S+[\'"]? (.*)>/';
$patterns[] = '/<a(.*) target=[\'"]?\S+[\'"]? (.*)>/';

$replacements = array();
$replacements[] = '<a$1$3>';
$replacements[] = '<a$1$3>';

$body = preg_replace($patterns,$replacements,$body);

干杯。

此表达式将处理3个选项:

  1. 无引号
  2. 双引号
  3. 单引号

'/ href = [“ \\']?([^^ \\'>] +)[” \\']?/'

2 用正则表达式匹配引号“

我需要将以下字符串与正则表达式匹配: 字符串之前和之后可能会有一些空格。 我试图做的是( s是一个String ): 但是,这不起作用。 然后,我尝试了几件事,直到发现以下内容确实起作用: 这意味着\\"部分未被识别为" 。 我该如何解决? ...

3 正则表达式匹配零或无,或

如何匹配可选字符序列或其他字符? 例如: 我从匹配字母“ KQkq”开始 这些是顺序的但可选的,因此“ K?Q?k?q?” 但是输入是这四个字母之一或“-”,所以我尝试了“(K?Q?k?q?|-)” 这适用于字母,但与“-”不匹配 如果字母不是可选的,我将使用 ...

2014-12-23 21:20:05 5 369   regex
4 正则表达式:在字符串中匹配双单引号

我想要一个匹配的正则表达式,例如'panic can''t happen'因为panic can''t happen 。 双重单引号只有在彼此相邻'panic can't' happen'才被允许, 'panic can't' happen'可以分为两个字符串, panic can happe ...

5 正则表达式:匹配双新行但不在反引号内

我试图匹配所有双新行,但不在反引号内。 我不熟悉后视,但我认为这就是这里所需要的。 这就是我到目前为止想出的: (?&lt;!`)[\\r\\n]{2} 。 不知何故我需要添加.*? 或在后视之后和换行之前类似,但我还没有弄清楚。 在这里您可以看到哪些应该匹配,哪些不应该匹配。 你可以在这里看 ...

2021-07-11 19:08:13 1 31   regex
7 正则表达式以捕获引号内的数字和有/无空格

我有一个正则表达式,它将捕获以 JKB 开头的任何字符串文字及其后的数字。 我为它构建了以下 Reg Ex: 它从以下列表中捕获除第一个和第二个之外的所有Amount : 29/7/2021,FDC 银行 PLC / PSR STEVE SMITH 先生,JKB99999LC,“9,5 ...

2021-07-29 09:40:07 1 28   c#/ regex
9 为什么捕获组导致双匹配正则表达式

考虑这两个脚本: 1st: " ".match(/(\\s)/) 和 第二名: " ".match(/\\s/) 结果 第1名: [" "," "] 第二名: [" "] 我不明白这种行为。 据我所知,捕获组/ paranthesis的目的是要在后面的 ...

10 正则表达式匹配双下划线?

我正在尝试扩展python.lang文件,以便使__init__方法突出显示。 我一直试图想出一个匹配所有__privateMethods()的正则表达式。 python.lang是一个XML文件,包含python文件的所有突出显示规则。 例如: 如何扩展它以匹配双下划线? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM