4

很抱歉,如果之前已经讨论过这个问题,我确实试图找到一个涵盖这个问题的前一个问题,但考虑到这个问题的主题,很难从其他问题的数千个答案中筛选出来。

我有一个很大的文档,其中包含用“+”或“-”表示的值。我需要反转此文件中的值。

我知道如何使用正则表达式查找和替换多个字符,但我不知道如何搜索使用的字符通过正则表达式。

我尝试过使用引号,甚至包括文件中出现的两边的|,但显然这也在正则表达式中使用。

这是可能的吗,我如何让regex搜索“+”?

编辑:使用普通的查找和替换并不是解决方案,因为这会让我只有一个字符,而没有其他字符,但我需要交换它们以反转整个文件的值。

Onthrax和markalex已经帮我修复了regex,但我仍然愿意接受其他解决方案。

8
  • 1
    +字符是正则表达式中的特殊字符。您需要对其进行转义。通常通过在其前面添加斜杠。因此它变成\+ 评论 2023年6月30日9:44
  • 1
    要使用regex搜索+,请使用\转义,如下所示:\+。但为什么首先需要正则表达式呢?这难道不应该通过简单的管柱更换来解决吗? 评论 2023年6月30日9:44
  • 谢谢你们俩!对于我来说,在周五早上上网显然为时过早,因为你已经说过了,这是一个显而易见的解决方案。 评论 2023年6月30日9:53
  • @markalex对不起,我错过了你评论的第二部分。除非我真正地今天早上很蠢,find and replace可以用+替换-,但不能替换它们,这样我就剩下30000多行带有just-的代码,这会让事情变得更糟。虽然regex可以通过迭代遍历每次出现的+或-来交换字符,但我可能完全错了,我已经证明了我自己无法找出明显的解决方案。 评论 2023年6月30日10:31
  • 你能给你的课文举个例子吗?这将使测试更容易一些。
    – 奶牛
    评论 2023年6月30日10:44

2个答案2

重置为默认值
5

替换:

(\+)|-

…与:

(?1-:+)

(\+)匹配并捕获每个+符号where-匹配,不捕获,每个-标志。(?1-:+)表示“添加-如果第1组被抓获,+否则”。这实际上互换了这两个符号。

试试看在regex101.com上(语法略有不同)。

或者,您可以替换:

  1. 每一个+带有临时标志
  2. 每一个-具有+
  3. 步骤1中使用的每个临时标志-

然而,这要求我们使用的临时标志不能在整个文档中使用。

0

正如Onthrax和markalex在注释中指出的那样,您只需要使用\来转义正则表达式。

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.