Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Regex 匹配字符串,前面不带a-z或a-z,且包含1324_Regex - Fatal编程技术网

Regex 匹配字符串,前面不带a-z或a-z,且包含1324

Regex 匹配字符串,前面不带a-z或a-z,且包含1324,regex,Regex,使用正则表达式,我希望在以下情况下匹配文本中的字符串: 它们包含1324作为子字符串 1324子字符串前面没有一个或多个字符,如a-zA-Z 例如: 应匹配“1324test” 应匹配“1324” “测试测试:/1324test”应该匹配 “测试1324test”应匹配 “测试1324”应匹配 “test1324test”应不匹配 以下是我的尝试:[^a-zA-Z]+1324 如何执行此操作?使用反向查找: .*(?<![a-zA-Z])1324.* *(?使用反向查找: .*(?&

使用正则表达式,我希望在以下情况下匹配文本中的字符串:

  • 它们包含
    1324
    作为子字符串
  • 1324
    子字符串前面没有一个或多个字符,如
    a-zA-Z
  • 例如:

    • 应匹配“
      1324test
    • 应匹配“
      1324
    • 测试测试:/1324test
      ”应该匹配
    • 测试1324test
      ”应匹配
    • 测试1324
      ”应匹配
    • test1324test
      ”应不匹配
    以下是我的尝试:
    [^a-zA-Z]+1324


    如何执行此操作?

    使用反向查找:

    .*(?<![a-zA-Z])1324.*
    

    *(?使用反向查找:

    .*(?<![a-zA-Z])1324.*
    
    *(?使用此正则表达式:

    (?<![a-zA-Z])1324
    
    (?
    

    它使用了一个负的lookback(这里有一个解释)。这意味着它将检查
    1324
    (lookback It)后面是否有字母(
    [a-zA-Z]
    )。如果有,它将失败

    使用此正则表达式:

    (?<![a-zA-Z])1324
    
    (?
    

    它使用了一个负的lookback(这里有一个解释)。这意味着它将检查
    1324
    (lookback It)后面是否有字母(
    [a-zA-Z]
    )。如果有,它将失败


    如果您的正则表达式风格不支持负面外观落后(如JS),您可以使用

    (^|[^a-zA-Z])1324
    

    匹配字符串的开头非字母字符。

    如果您的正则表达式风格不支持负面外观落后(例如JS),您可以使用

    (^|[^a-zA-Z])1324
    

    匹配字符串或非字母字符的开头。

    这是我的尝试。我认为您的第二个测试用例应该是1324而不是1234

    ([^a-zA-Z]+|^)1324
    

    更新:不需要加号链接。它只是广告开销。正确的例子如下

    ([^a-zA-Z]|^)1324
    


    这是我的尝试。我认为您的第二个测试用例应该是1324而不是1234

    ([^a-zA-Z]+|^)1324
    

    更新:不需要加号链接。它只是广告开销。正确的例子如下

    ([^a-zA-Z]|^)1324
    


    您可以在不捕获的情况下匹配您不想要的内容,然后捕获您想要的内容,然后检查捕获的部分

    /[a-z]1324|(1324)|.*/i
    
    在JavaScript中,您的匹配将由

    !!input.match(regexp)[1]
    

    您可以在不捕获的情况下匹配您不想要的内容,然后捕获您确实想要的内容,然后检查捕获的部分

    /[a-z]1324|(1324)|.*/i
    
    在JavaScript中,您的匹配将由

    !!input.match(regexp)[1]
    


    在你的第二个例子中,你展示了
    1234
    …你的意思是
    1324
    ?@l'l,是的,对不起,这是一个打字错误,我修正了。什么regexp语言?在你的第二个例子中,你展示了
    1234
    …你的意思是
    1324
    ?@l'l,是的,对不起,这是一个打字错误,我修正了。什么regexp语言?对不起,这是一个打字错误,我修正了。为什么我们需要广告d
    +
    ,我认为它可以在没有
    +
    的情况下工作?例如,
    +
    的引入增加了大约40个额外的步骤。是的,它可以在没有加号的情况下工作,而且只会增加开销。正则表达式只需要在匹配前检查一个字符。我在发布后意识到了这一点。不幸的是,我已经发布了,并且我已经发布了现在改变它应该是不好的网络礼节。我仍然没有改变它,但我正在更新它。对不起,这是一个打字错误,我修正了它。为什么我们需要添加
    +
    ,我认为它可以在没有
    +
    的情况下工作?例如,
    +
    的引入增加了大约40个额外的步骤。是的,它可以在没有加号的情况下工作,只需添加加号即可它的开销。正则表达式只需要在比赛前检查一个字符。我在发布后意识到了这一点。不幸的是,我已经发布了,我认为现在更改它将是不好的网络礼仪。我仍然没有更改它,但我正在更新它。哇!只有37个步骤!哇!只有37个步骤!谢谢你的回复,但我认为这在ca中失败了如果提供的文本不包含1324,您可以尝试
    !!“test test”.match(/[a-z]1324|(1324)/i)[1]
    …在这个答案中,您假设match将返回一个非空数组,如果像本例中那样返回空数组呢?!将抛出一个错误:
    未捕获类型错误:无法读取null的属性“1”
    感谢您的响应,但我认为如果提供的文本不包含1324,则此操作将失败,您可以尝试
    !!“测试”匹配(/[a-z]1324 |(1324)/i)[1]
    …在这个答案中,您假设match将返回一个非空数组,如果空数组像本例中那样返回呢?!将抛出一个错误:
    未捕获类型错误:无法读取null的属性“1”
    为什么
    *
    ?为什么不删除它们?我认为它们正在添加额外的步骤,例如为什么不如下:,这减少了大约100多个步骤(与251个步骤相比减少了44个步骤)?因为您的问题明确指出您希望正则表达式匹配包含1324作为子字符串的字符串(您的要求的第1点)。您提供的正则表达式只匹配字符串的1324部分,而不匹配字符串的其余部分。我的正则表达式匹配整个字符串。啊哈,明白了。感谢您的澄清为什么
    *
    ?为什么不删除它们?我想他们正在添加额外的步骤,例如,为什么不如下:,这将减少大约100多个步骤(44个步骤,而251个步骤)?因为您的问题明确说明您希望正则表达式匹配包含1324作为子字符串的字符串(您要求的第1点)。您提供的正则表达式只匹配字符串的1324部分,而不匹配字符串的其余部分。我的正则表达式匹配整个字符串。啊哈,明白了。感谢您的澄清