簡體   English   中英

正則表達式替換元素,除非在同一行和匹配之前有另一個匹配

[英]Regex replace element unless there is another match on same line and before match

我正在做一些工作來重寫我公司一些用戶的 sql 查詢。 我們為重寫這些查詢所做的一件事是替換. 被任何帶有. 周圍沒有空格(使用簡單的正則表達式\\s*\\.\\s* )。

但是,我遇到了一個問題,其中傳入的查詢包含如下注釋:

)
  , wcr AS -- hello I am a comment that ends in a period.
(

然后將其格式化如下,這會使查詢失敗。

)
  , wcr AS -- hello I am a comment that ends in a period.(

我想不出任何可以進行我正在尋找的正確替換的正則表達式 - 也就是說,如果沒有--. 在同一行。

任何幫助將不勝感激!

看起來您想要圍繞 a 的空格或制表符. 被替換,但不會認為\\n是這樣的空格。 \\s是 Python 中的所有[ \\t\\n\\r\\f\\v]

您可以將[ \\t]*\\.[ \\t]* (任一側的零個或多個空格或制表符)替換為.

如果您使用 g (全局)標志,此正則表達式將找到您想要的行並捕獲它們:

^  , wcr AS (?<!-- )([^\-]*)$

示例: https : //regex101.com/r/0LYWgo/1/

然后我會在你最喜歡的編程語言中使用string replace來去掉點周圍的空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM