当前位置: 首页 > 知识库问答 >
问题:

在记事本正则表达式中,删除子字符串的多个实例中不同数量的空格

赵珂
2023-03-14

使用记事本,我想在这样的字符串中用分号 (;”) 替换所有出现的分号后跟空格 (“;”

S#14_Budget.Y#2014; 2015; 2016.P{[Third Generation]}.w#Periodic.E{PRU.[Descendants]}; CNS.PRU.V#[None]; Total.A{Asset.[Base]}; {Liab.[Base]}; {NProfit.[Base]}; {Bal.[Base]}; {Stats.[Base]}; {BalSht.[Base]}; {NIncome.[Base]}.I{[ICP Top].[Base]}.C1#TotalC1.C2#TotalC2.C3#[None].C4#[None]</ns

字符串可以在一个文件中出现数百次,我使用S#找到它*


共有1个答案

鞠边浩
2023-03-14

在哈姆扎的帮助下,我想到了这个:

替换:

(S#.*?;) (?=.*?</ns)

具有:

\1

然后只需点击全部替换,直到不再进行替换(每个查找都包含 S#,因此您一次只能对这些字符串中的每个字符串进行一次替换),或者您可以编写一个简单的宏来查找和替换(全部?)并根据需要多次运行。

如果你的这个字符串在它自己的行上,你还应该包括行指示符的开始(^)和结束($):

^(S#.*?;) (?=.*?</ns$)

解释:(来源)

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    S#                       'S#'
--------------------------------------------------------------------------------
    .*?                      any character except \n (0 or more times
                             (matching the least amount possible))
--------------------------------------------------------------------------------
    ;                        ';'
--------------------------------------------------------------------------------
  )                        end of \1
--------------------------------------------------------------------------------
                           ' '
--------------------------------------------------------------------------------
  (?=                      look ahead to see if there is:
--------------------------------------------------------------------------------
    .*?                      any character except \n (0 or more times
                             (matching the least amount possible))
--------------------------------------------------------------------------------
    </ns                     '</ns'
--------------------------------------------------------------------------------
  )                        end of look-ahead

如果Notepad支持可变长度的look-behinds(至少在6.4.5中不支持),您可以替换< code > (?

 类似资料:
  • 问题内容: 我有以下字符串作为输入: 最终输出将如下所示: 也就是说 ,将删除所有前导零和尾随零,并且正/负零都将简单地为零。 我们可以通过首先分割字符串并为每个部分使用Regex来实现。但是 我的字符串大小超过10000 。 我们怎样才能做到这一点呢? 编辑: 答案分析: 我已经用String测试了所有答案,并且 Wiktor Stribiewew的 答案通过了所有测试用例。(请参阅此处:htt

  • 问题内容: 我需要删除字符串中的一些子字符串(在大型数据集中)。该 子常常包含特殊字符,像这样的:,^,/,…和 的replaceAll()将它们视为对正则表达式的特殊字符,如点 会匹配任何字符,这是不是我真正想要的东西。 是否有其他函数可以执行“替换”而不将第一个 参数视为正则表达式? 问题答案: 只需使用String.replace()。它的功能相同,但是它 内部处理了特殊字符的转义,以避免您

  • 我正在尝试查找并删除在Notepad++中有“no data”作为数据的表行。可能是一个更好的方法,但记事本++是必须在这里。值可以是任何字符串。所有的表(每个tr标签)都在一行(可能有些导出问题),我发现很难删除它们。为了更好地演示(也许,希望如此),我把它们分开了。 后接 所以除了th字符串之外,每个tr中的一切都是一样的。我试过这样的方法,但没有奏效: 审判 非常感谢您的帮助!:)

  • 我有一个文本文件,其中包含以下内容:鲍勃去“商店”商店“买牛奶”买牛奶。 我想删除string1中所有引用的内容,使其只包含:Bob去商店买牛奶。 有没有一种不用正则表达式就能做到这一点的方法?我目前正在尝试使用split()方法。我首先使用split()将文本文件读入名为string1的字符串变量,然后将值存储回名为newString的新字符串中。 我对java非常陌生,不确定是否正确使用了sp

  • 我有以下字符串作为输入: 最终输出将是这样的: i、 e.所有前导零和尾随零将被删除,正/负零将仅为零。 我们可以通过首先拆分字符串并对每个部分使用Regex来实现这一点。但是我的字符串大小超过10000。 我们如何使用实现这一点? 编辑: 答案分析: 我用字符串测试了所有的测试用例。(见此处:https://regex101.com/r/tS8hE3/9)其他答案在大多数案例中都得到了通过,但不

  • 在使用< code>bookdown的长段落中,我插入了许多图像。将段落组合成单个字符串(在数据框中)后,我想删除与插入图像相关的降价文本,但不删除这些插入图像之间的任何文本。这里有一个玩具的例子。 正则表达式不会在第一个闭括号处停止,它会一直持续到最后一个,并删除其间的“write to keep”。 我尝试在R中应用字符串操作:在多个位置删除特定模式,而不删除模式实例之间的文本,该模式使用和,