当前位置: 首页 > 面试题库 >

正则表达式不是运算符

澹台华晖
2023-03-14
问题内容

正则表达式中是否存在NOT运算符?就像在那个字符串中一样:"(2001) (asdf) (dasd1123_asd 21.01.2011 zqge)(dzqge) name (20019)"

我想删除所有\([0-9a-zA-z _\.\-:]*\)但不是一年的:(2001)

因此,正则表达式应返回的内容必须是:(2001) name

注意:类似的东西\((?![\d]){4}[0-9a-zA-z _\.\-:]*\)对我不起作用((20019)某种程度上也匹配…)


问题答案:

不,没有直接的非运算符。至少不是您希望的方式。

您可以使用零宽度的负前瞻,但是:

\((?!2001)[0-9a-zA-z _\.\-:]*\)

(?!...)部分的意思是“仅在 以下 文本(因此:前瞻)与此(因此:否定) 匹配时才匹配。但是它实际上并不会 消耗
其匹配的字符(因此为零宽度)。

实际上,有2个轴的环顾四周有4种组合:

  • lookbehind / lookahead:指定是否考虑该点 之前之后 的字符
  • 正/负:指定字符 必须 匹配还是 匹配。


 类似资料:
  • let formulaStr = ""; formulaStr这个是带数字符号的字符串 正则表达式无法满足 加减乘除小括号嵌套使用,该表达式只能满足单层小括号 百度搜索很多无法满足

  • 问题内容: 这可能是一个愚蠢的问题,但我在任何地方都找不到: 如何在不带括号的情况下使用Java OR正则表达式运算符(|)? 例如:电话|电话|传真 问题答案: 您可以单独使用管道: 例如: 输出: 使用括号的主要原因是要限制替代方法的范围: 具有相同的输出。但是,如果您只是这样做: 你得到: 因为您说过“ string1”或“ 2”。 如果您不想捕获表达式的那一部分,请使用:

  • 正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。 相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序: 运算符 描述 \ 转义符 (), (?:), (?=), [] 圆括号和方括号 *, +, ?, {n}, {n,}, {n,m} 限定符 ^, $, \任何元字符、任何字符 定位点和序列(即:位置和顺序) | 替

  • 本文向大家介绍Java正则表达式逻辑运算符,包括了Java正则表达式逻辑运算符的使用技巧和注意事项,需要的朋友参考一下 Java正则表达式支持3个逻辑运算符,它们是- XY:X,然后是Y X | Y:X或Y (X):捕获组。 XY:X,然后是Y 这仅匹配两个连续的单个字符。 示例 输出1 输出2 X | Y 这匹配“ |”周围的两个表达式/字符中的任何一个 示例 输出结果 (X):捕获组 捕获组使

  • 此示例解释了两种形式的正则表达式运算符。 Match 它表示为〜。 它查找包含匹配字符串的字段。 例如,以下示例打印包含模式9 。 例子 (Example) [jerry]$ awk '$0 ~ 9' marks.txt 执行此代码时,您将获得以下结果 - 输出 (Output) 2) Rahul Maths 90 5) Hari History 89 不匹配 它表示为!~

  • 问题内容: 我正在尝试编写一个正则表达式来检查给定的字符串是否像a + b,2 + a + b,3 + 6 * 9 + 6 * 5 + a * b等… 仅+和*运算符。 我试过了 不幸的是,它仅处理3 * 7 …(数字*数字)之类的情况。 等待您的答案,感谢您的阅读。 问题答案: 把和字符类中。 演示