【问题标题】:Notepad++ regex reorder text a bit more complexNotepad++ 正则表达式重新排序文本有点复杂
【发布时间】:2013-09-19 08:54:35
【问题描述】:

为了简化,我最初问了这个问题,我得到了一个正确的答案:regex to reorder text with MS Word 2010 or Notepad++

不幸的是,我试图应用我学到的东西,但我无法弄清楚!

这是一个词典,因此对于每个条目(÷H1、÷H2、÷H3 等),都有 1 个或多个“KJV 出现次数”。 IE:“÷H1”只有 1 个单词:“abidan”。
但是,“÷H2”有两个词“abida”和“abida”。
并且,“÷H3”有 3 个单词“abijah”、“abiah”和“abia”。

(有些条目多达 100 个单词!我需要将它们记入底部,以制表符分隔,以便我可以使用 MS Excel 打开文本文件)。

这就是我拥有它的方式:

÷H1
אֲבִידָן
'ăbı̂ydânn
BDB 定义:
Abidan = “我父亲是法官”
1) 本杰明的王子(统治者)
词性:名词专有名词
BDB/Strong 编号的相关词:来自 H1 和 H1777
KJV 发生总数:5
阿比丹,5
Num_1:11、Num_2:22、Num_7:60、Num_7:65、Num_10:24

÷H2
אֲבִידָע
'ăbı̂ydâ‛
BDB 定义:
Abida 或 Abidah = “我父亲知道”
1) 米甸的第四个儿子和亚伯拉罕的孙子,他的妻子基土拉(撒拉死后)
词性:名词专有名词
BDB/Strong 编号的相关词:来自 H1 和 H3045
KJV 发生总数:2
abida, 1
1Ch_1:33
阿比达,1
Gen_25:4

÷H3
אֲבִיָּהוּ / אֲבִיָּה
'ăbı̂yâh / 'ăbı̂yâhû
BDB 定义:
Abia or Abiah or Abijah = “耶和华是(我的)父亲”
1) 犹大王,罗波安的儿子和继承人
2) 撒母耳的次子
3) 以色列王耶罗波安的儿子
4) 便雅悯人 Becher 的儿子
5) 一个祭司家族的负责人(24 个利未人团体之一)
6) 牧师之家的负责人(流放后)
7) 赫兹伦的妻子
8) 希西家的母亲(比较 H21)
词性:名词专有名词
BDB/Strong 编号的相关词:来自 H1 和 H3050
KJV 发生总数:25
abijah, 20
1Ki_14:1, 1Ch_24:10, 2Ch_11:20, 2Ch_11:22, 2Ch_12:16, 2Ch_13:1-4 (4), 2Ch_13:15, 2Ch_13:17, 2Ch_13:19-22 (4), 2Ch_29:1 ( 2), Neh_10:7, Neh_12:4, Neh_12:17
abiah, 4
1Sa_8:2, 1Ch_2:24, 1Ch_6:28, 1Ch_7:8
abia, 1
1Ch_3:10


这正是我需要的:

÷H1 TABDELIMITED אֲבִידָן TABDELIMITED 'ăbı̂ydân TABDELIMITED BDB 定义:Abidan = “我父亲是法官”。 1) 便雅悯的王子(统治者)。 TABDELIMITED 词性:名词专有名词。 TABDELIMITED BDB/Strong 编号的相关词:来自 H1 和 H1777。 TABDELIMITED 总 KJV 出现次数:5 TABDELIMITED abidan TABDELIMITED , 5 TABDELIMITED Num_1:11, Num_2:22, Num_7:60, Num_7:65, Num_10:24

÷H2 TABDELIMITED אֲבִידָע TABDELIMITED 'ăbı̂ydâ‛ TABDELIMITED BDB 定义:Abida 或 Abidah = “我父亲知道”。 1)米甸的第四个儿子和亚伯拉罕的孙子,他的妻子基土拉(撒拉死后)。 TABDELIMITED 词性:名词专有名词。 TABDELIMITED BDB/Strong 编号的相关词:来自 H1 和 H3045。 TABDELIMITED 总 KJV 出现次数:2 TABDELIMITED abida TABDELIMITED , 1 TABDELIMITED 1Ch_1:33

÷H2 TABDELIMITED אֲבִידָע TABDELIMITED 'ăbı̂ydâ‛ TABDELIMITED BDB 定义:Abida 或 Abidah = “我父亲知道”。 1)米甸的第四个儿子和亚伯拉罕的孙子,他的妻子基土拉(撒拉死后)。 TABDELIMITED 词性:名词专有名词。 TABDELIMITED BDB/Strong 编号的相关词:来自 H1 和 H3045。 TABDELIMITED 总 KJV 出现次数:2 TABDELIMITED abidah TABDELIMITED , 1 TABDELIMITED Gen_25:4

÷H3 TABDELIMITED אֲבִיָּהוּ / אֲבִיָּה TABDELIMITED 'ăbı̂yâh / 'ăbı̂yâhû TABDELIMITED BDB 定义:Abia or Abiah or Abijah = “耶和华是(我的)父亲”。 1) 犹大王,罗波安的儿子和继承人。 2) 撒母耳的次子。 3) 以色列王耶罗波安的儿子。 4) 便雅悯人 Becher 的儿子。 5) 一个祭司家族的负责人(24 个利未人团体之一)。 6) 一个祭司之家的负责人(流放之后)。 7) 希斯仑的妻子。 8) 希西家的母亲(比较 H21)。 TABDELIMITED 词性:名词专有名词。 TABDELIMITED BDB/Strong 编号的相关词:来自 H1 和 H3050。 TABDELIMITED 总 KJV 出现次数:25 TABDELIMITED abijah TABDELIMITED , 20 TABDELIMITED 1Ki_14:1, 1Ch_24:10, 2Ch_11:20, 2Ch_11:22, 2Ch_12:16, 2Ch_13:1- 4 (4), 2Ch_13:15, 2Ch_13:17, 2Ch_13:19-22 (4), 2Ch_29:1 (2), Neh_10:7, Neh_12:4, Neh_12:17

÷H3 TABDELIMITED אֲבִיָּהוּ / אֲבִיָּה TABDELIMITED 'ăbı̂yâh / 'ăbı̂yâhû TABDELIMITED BDB 定义:Abia or Abiah or Abijah = “耶和华是(我的)父亲”。 1) 犹大王,罗波安的儿子和继承人。 2) 撒母耳的次子。 3) 以色列王耶罗波安的儿子。 4) 便雅悯人 Becher 的儿子。 5) 一个祭司家族的负责人(24 个利未人团体之一)。 6) 一个祭司之家的负责人(流放之后)。 7) 希斯仑的妻子。 8) 希西家的母亲(比较 H21)。 TABDELIMITED 词性:名词专有名词。 TABDELIMITED BDB/Strong 编号的相关词:来自 H1 和 H3050。 TABDELIMITED 总 KJV 出现次数:25 TABDELIMITED abiah TABDELIMITED , 4 TABDELIMITED 1Sa_8:2, 1Ch_2:24, 1Ch_6:28, 1Ch_7:8

÷H3 TABDELIMITED אֲבִיָּהוּ / אֲבִיָּה TABDELIMITED 'ăbı̂yâh / 'ăbı̂yâhû TABDELIMITED BDB 定义:Abia or Abiah or Abijah = “耶和华是(我的)父亲”。 1) 犹大王,罗波安的儿子和继承人。 2) 撒母耳的次子。 3) 以色列王耶罗波安的儿子。 4) 便雅悯人 Becher 的儿子。 5) 一个祭司家族的负责人(24 个利未人团体之一)。 6) 一个祭司之家的负责人(流放之后)。 7) 希斯仑的妻子。 8) 希西家的母亲(比较 H21)。 TABDELIMITED 词性:名词专有名词。 TABDELIMITED BDB/Strong 编号的相关词:来自 H1 和 H3050。 TABDELIMITED 总 KJV 出现次数:25 TABDELIMITED abia TABDELIMITED , 1 TABDELIMITED 1Ch_3:10

我需要用制表符分隔它,然后我可以用 MS Excel 打开它,每个或多个 ÷H1's ÷H2's ÷H3's 都有一行...我以粗体/斜体强调的所有单词最终都会落下进入我的 Excel 电子表格的 H 列。

谢谢! 亚历克斯

【问题讨论】:

  • 我认为你对 Notepad++ 的要求太高了,不是因为 Notepad++ 做不到,而是因为 RE 会很大很复杂。如果您需要在另一个文件上重复该过程,或者稍有不同,则必须再次输入 RE。我相信,最好用 Awk、Perl 或 Python 之类的东西,甚至 Excel 的脚本语言编写脚本。
  • 嗨 AdrianHHH,我不是程序员,我已经在 Notepad++ 中找到了答案,但我不知道如何应用它。这是答案。你知道怎么做吗? stackoverflow.com/questions/18880876/…
  • stackoverflow.com/about 说“Stack Overflow 是一个面向专业和狂热程序员的问答网站”,它不是让您免费完成工作的地方。正如您所说的答案已经在另一个问题中给出,您对这个问题做了什么尝试,效果如何,为什么与您想要的不同?
  • AdrianHHH,这可以完美地创建前 3 条记录,问题是我不知道如何修改它以在每条记录之后放置制表符,所以我可以得到所有粗体/斜体字在 Excel 中打开时在同一 H 列中。 notepad++ 中检查正则表达式的步骤: 查找: (÷[^.]+\.)[\r\n]+([^.]+\.) 替换: $1 $2 查找: (÷[^\r\n ]+.)[\r\n]{1,2}([a-z]+,) 替换:$1 $2 查找:((÷[^\r\n,]+\.)[^\r\n] +[\r\n]{1,2})([a-z]) 替换:$1$2 $3 根据需要多次重复步骤 3。请说明一下:)我很感激。
  • one“KJV Occurrences”有一个正则表达式。查找:^(÷[^ ]+)( )([^ ]+( \/ [^ ]+)?)( )([^ ]+( \/ [^ ]+)?)( )(.*)( )(Part of Speech:.*)( )(A Related Word by BDB/Strong’s Number:.*)( )(Total KJV Occurrences: \d+)( )(.*)(, \d+)( )(.*) 替换:$1\t$3\t$6\t$9.\t$11.\t$13.\t$15\t$17\t$18\t$20 如果你想处理更多的事件,你应该像@AdrianHHH 所说的那样编写一个脚本。但也许一些 NPP 插件可以帮助你(NppExec、Python 等)+1 提示:试试 regexhero.net/tester。我希望它有所帮助。

标签: regex excel notepad++


【解决方案1】:

呵呵,这个问题比你之前的问题复杂多了……我会用<space> 来表示一个空格字符,而不是字面的“空格”字。

步骤:

  1. 查找:(Definition:)[\r\n]{1,2}|[\r\n]{1,2}(?=\d+\))

    替换为:<space>

    这部分应该将所有定义放在一行中。

  2. 查找:

    (÷[^\r\n]+)[\r\n]{1,2}([^\r\n]+)[\r\n]{1,2}([^\ r\n]+)[\r\n]{1,2}([^\r\n]+)[\r\n]{1,2}([^\r\n]+)[\ r\n]{1,2}([^\r\n]+)[\r\n]{1,2}([^\r\n]+)[\r\n]{1,2 }([^\r\n,]+),([^\r\n]+)[\r\n]{1,2}([^\r\n]+)

    替换为:$1\t$2\t$3\t$4\t$5\t$6\t$7\t$8\t$9\t$10

  3. 查找:

    ((÷(?![^\r\n]+[\r\n]{1,2}÷)(?:[^\t]+\t){7})[^\r \n]+[\r\n]{1,2})([^\r\n,]+),([^\r\n]+)[\r\n]{1,2}( [^\r\n]+)

    替换为:$1$2$3\t$4\t$5

并根据需要多次重复步骤 3。

编辑:如果您只想÷H1 后跟粗体字,您可以尝试:

  1. 查找:^(÷[^\r\n]+)[\s\S]+?Total KJV Occurrences: \d+

    替换为:$1

  2. 查找:(÷[^\r\n]+)[\r\n]{1,2}([^,]+),[^\r\n]+[\r\n]{1,2}[^\r\n]+

    替换为:$1\t$2

  3. 寻找

    ((÷[^\s]+)[^\r\n]+[\r\n]{1,2}(?![\r\n]*÷))([^,] +),[^\r\n]+[\r\n]{1,2}[^\r\n]+

    替换为:$1$2\t$3

并根据需要多次重复步骤 3。

【讨论】:

  • 嗨,杰瑞,我正在尝试,但它没有达到预期的效果。我相信您误解了我的意图:我并不担心“÷Hxxxx”和“Total KJV Occurrences: xxxx”之间的所有内容。就在“Total KJV Occurrences: xxxx”之后,我需要收集每个“Occurrence”并用相应的 ÷Hxxx 对其进行标记。换句话说,我很乐意只提取一个列表,例如: ÷H1 TAB "abidan" ÷H2 TAB "abida" ÷H2 TAB "abidah" ÷H3 TAB "abijah" ÷H3 TAB "abiah" ÷H3 TAB “abia”只是我在示例文本中加粗/斜体的词。
  • @user2792945 哦,好吧,我想我明天可以试试(大约 10 小时后)我来晚了 :( 虽然我不确定为什么它不起作用。当我把excel中的结果,所有粗体字都进入H列。哦,好吧,我明天试试。
  • 早安杰瑞!你是对的,正如你所说,它工作得很好,并且它们在 H 列中都很好地排列。但是当在整个大的希伯来语词典文件上运行它时.. ÷H1 到 ÷H8674 你知道它是怎么回事...... :)其他要考虑的东西,还有其他+其他+其他要清理的东西。所以...我要在家里举办一个小型派对,并感谢阿爸像你这样聪明/友好的人!这是一个突破,因为现在我必须为新约词典做同样的事情,这将是一件轻而易举的事,多亏了你!非常感谢杰瑞,我会及时通知你我的进展。 :) 亚历克斯
  • @Alex 好的,我已将您在第一条评论中谈到的版本放在答案中。这只会给你章节(我认为那是章节)和你在制表符后加粗的关键字。
  • 哦,是的,没关系!我确实做了一些小调整,但都是基于你如何帮助我理解它是如何工作的 :) 非常感谢,杰瑞!
猜你喜欢
  • 2021-10-04
  • 2018-01-17
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
相关资源
最近更新 更多