Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
Php 正则表达式-从固定模式中排除符号_Php_Regex - Fatal编程技术网

Php 正则表达式-从固定模式中排除符号

Php 正则表达式-从固定模式中排除符号,php,regex,Php,Regex,我需要正则表达式专家的帮助 我有一个脚本,它给出了一个固定的模式列表。使用非常简单的正则表达式,我搜索目标文本中的模式存在。例如: /.*TFT.*/ /.*LCD.*/ /.*ANTI-GLARE.*/ 那些字符串-TFT,LCD,防眩光是固定的-我不能修改它们。好吧,问题是在防眩光-该破折号将导致不匹配的防眩光。我知道我是这样做的: /.*ANTI-?GLARE.*/ 这将匹配两个变体,但我无法修改该字符串。我的问题是: 除了模式中的感叹号,还有其他方法使符号可选吗 编辑-清除 在给出一

我需要正则表达式专家的帮助

我有一个脚本,它给出了一个固定的模式列表。使用非常简单的正则表达式,我搜索目标文本中的模式存在。例如:

/.*TFT.*/
/.*LCD.*/
/.*ANTI-GLARE.*/
那些字符串-TFT,LCD,防眩光是固定的-我不能修改它们。好吧,问题是在防眩光-该破折号将导致不匹配的防眩光。我知道我是这样做的:

/.*ANTI-?GLARE.*/
这将匹配两个变体,但我无法修改该字符串。我的问题是: 除了模式中的感叹号,还有其他方法使符号可选吗

编辑-清除

在给出一些答案和提示之后,我将尝试对我的问题进行更具体的描述。 我在表中有一个字符串:

防眩光

TFT
AntiGlare
LCD
通过XML,我收到了新模型,其描述如下:

防眩光

我需要确保——我是否有类似“防眩光”描述的条目。我无法更改接收到的防眩光,因为有很多字符串-范围很广-不可能在正则表达式中构建逻辑组或类似的任何字符串。它是使用php脚本构建的,如:

$rexp="/.*~.*/i"; 
  • 其中~替换为该字符串

    $rexp=str_replace(“~”,$rexp,$cond)

  • 其中$cond保存当前接收的字符串

    操作员可以更改~之外的任何部分,但不能更改~内容中的任何部分-将有数千个


    • 好吧,你不能修改那些正则表达式,但我想你可以修改文本。所以,你可以这样做


      使用带有不区分大小写标志的正则表达式
      /antiglare/
      ,然后将其替换为
      防眩光
      。我希望这对你有用。我不能给你代码,因为我自己不懂php

      嗯,你不能修改那些正则表达式,但我想你可以修改文本。所以,你可以这样做


      使用带有不区分大小写标志的正则表达式
      /antiglare/
      ,然后将其替换为
      防眩光
      。我希望这对你有用。我不能给你代码,因为我自己不懂php

      嗯,你不能修改那些正则表达式,但我想你可以修改文本。所以,你可以这样做


      使用带有不区分大小写标志的正则表达式
      /antiglare/
      ,然后将其替换为
      防眩光
      。我希望这对你有用。我不能给你代码,因为我自己不懂php

      嗯,你不能修改那些正则表达式,但我想你可以修改文本。所以,你可以这样做


      使用带有不区分大小写标志的正则表达式
      /antiglare/
      ,然后将其替换为
      防眩光
      。我希望这对你有用。我不能给你代码,因为我自己不懂php

      您使用的是php,因此我们可以假设您得到了一个类似数组的东西,每个字符串都被接受

      如果dash打扰了你,这里有一种方法可以做你想做的事:

      <?php
      
      $words = array('TFT', 'LCD', 'ANTI-GLARE');
      $pattern = '/(' . str_replace('-', '-?', implode($words, '|')) . ')/i';
      
      ?>
      

      这将生成模式
      /(TFT | LCD | AntiGlare | AntiGlare | AntiGlare | AntiGlare | AntiGlare | AntiGlare)/i

      您使用的是php,因此我们可以假设您有一个类似数组的东西,每个字符串都被接受

      如果dash打扰了你,这里有一种方法可以做你想做的事:

      <?php
      
      $words = array('TFT', 'LCD', 'ANTI-GLARE');
      $pattern = '/(' . str_replace('-', '-?', implode($words, '|')) . ')/i';
      
      ?>
      

      这将生成模式
      /(TFT | LCD | AntiGlare | AntiGlare | AntiGlare | AntiGlare | AntiGlare | AntiGlare)/i

      您使用的是php,因此我们可以假设您有一个类似数组的东西,每个字符串都被接受

      如果dash打扰了你,这里有一种方法可以做你想做的事:

      <?php
      
      $words = array('TFT', 'LCD', 'ANTI-GLARE');
      $pattern = '/(' . str_replace('-', '-?', implode($words, '|')) . ')/i';
      
      ?>
      

      这将生成模式
      /(TFT | LCD | AntiGlare | AntiGlare | AntiGlare | AntiGlare | AntiGlare | AntiGlare)/i

      您使用的是php,因此我们可以假设您有一个类似数组的东西,每个字符串都被接受

      如果dash打扰了你,这里有一种方法可以做你想做的事:

      <?php
      
      $words = array('TFT', 'LCD', 'ANTI-GLARE');
      $pattern = '/(' . str_replace('-', '-?', implode($words, '|')) . ')/i';
      
      ?>
      


      这将生成模式
      /(TFT | LCD | AntiGlare | Anti-Glare | Anti-Glare | Anti-Glare)/i

      字符后面的问号是要走的路。此外,删除这些
      *
      ,它们是无用的,实际上会导致您的正则表达式变慢。您可以使用正则表达式或/(Anti-Glare)|(AntiGlare)/但这也涉及到修改正则表达式。小心,正则表达式是区分大小写的,
      防眩光
      永远不会匹配
      防眩光
      在我的解释中,所有字符串-模式和目标总是大写-只是为了清除。当然,我使用“i”开关字符后面的问号是正确的方法。此外,删除这些
      *
      ,它们是无用的,实际上会导致正则表达式变慢。您可以使用正则表达式或/(防眩光)|(防眩光)/但这也涉及修改正则表达式。小心,正则表达式是区分大小写的,
      防眩光
      永远不会匹配
      防眩光
      在我的解释中,所有字符串-模式和目标总是大写-只是为了清除。当然,我使用“i”开关字符后面的问号是正确的方法。此外,删除这些
      *
      ,它们是无用的,实际上会导致正则表达式变慢。您可以使用正则表达式或/(防眩光)|(防眩光)/但这也涉及修改正则表达式。小心,正则表达式是区分大小写的,
      防眩光
      永远不会匹配
      防眩光
      在我的解释中,所有字符串-模式和目标总是大写-只是为了清除。当然,我使用“i”开关字符后面的问号是正确的方法。此外,删除这些
      *
      ,它们是无用的,实际上会导致正则表达式变慢。您可以使用正则表达式或/(防眩光)|(防眩光)/但这也涉及修改正则表达式。小心,正则表达式是区分大小写的,
      防眩光
      永远不会匹配
      防眩光
      在我的解释中,所有字符串-模式和目标总是大写-只是为了清除。当然,我用“我”这个词谢谢。不幸的是,这将是解决方案,只有当模式列表是固定的。但这些模式是动态的——它们是通过XML到达的,我不知道——今天我将使用防眩光。例如,明天可以是全尺寸。谢谢。不幸的是,这将是解决方案,只有当模式列表是固定的。但这些模式是动态的-