记事本++:如何删除除包含句点外的所有字符串

时间:2019-06-28 04:46:00

标签: regex database datatables notepad++

在一个文件中,我有无数import json import re with open('model.json','r') as fb: con = json.load(fb) for layer_key in con['layers'][0]: print("Layer: {}".format(layer_key)) layer = con['layers'][0][layer_key] layers_kwargs = re.sub('^(.*?)\(', '', layer)[:-1] if not layers_kwargs: print('No kwargs') continue for kwarg in layers_kwargs.split(', '): kwarg = [i.strip() for i in kwarg.split('=')] if len(kwarg) != 2: print('No key', kwarg) continue k = kwarg[0] v = kwarg[1] print(k,v) 语句和SELECT关键字结合在一起。我只想提取所有UNION字符串?如何在记事本++编辑器中使用正则表达式删除不包含句点(。)的所有单词?数据库和表是唯一带有句点的。

即使没有删除新行,我也可以。但是,作为给所有看这篇文章的人一个学习加成,您还可以显示修饰新行的正则表达式,它将显示以下输出:

db.table

2 个答案:

答案 0 :(得分:3)

您可以在正则表达式模式下尝试以下查找和替换:

Find:    (?<=^|\s)[^.]+(?=$|\s)
Replace: <empty string>

Demo

请注意,我的替换只删除查询中不需要的字词;它不会消除杂散或剩余的空白。为此,您可以轻松地快速进行第二次替换以删除不需要的空白。

编辑:

似乎Notepad ++不喜欢我在模式中使用的可变宽度外观。这是一个经过重构且更为冗长的版本,它使用严格固定宽度的lookbehinds:

(^[^.]+$)|(^[^.]+(?=\s))|((?<=\s)[^.]+$)|((?<=\s)[^.]+(?=\s))

Demo

以上两种模式的逻辑是匹配一个完全由非点字符组成的单词,该单词在任一侧被以下一个或多个包围:

  • 字符串(^)的开头
  • 字符串($)的结尾
  • 任何类型的空格(\s

答案 1 :(得分:0)

我的猜测是,也许这样的表达:

([\s\S]*?)(\S*(\.)\S*)

$2\n或:

(\S*(\.)\S*)|(.+?)
$1一起使用

可能有效。

Demo 1

Demo 2