Board logo

标题: [文本处理] [已解决]批处理怎样找到同一行的不对称词组。 [打印本页]

作者: 每天几分    时间: 2012-9-27 23:27     标题: [已解决]批处理怎样找到同一行的不对称词组。

本帖最后由 每天几分 于 2012-9-28 14:54 编辑

【示例】:

幅射→辐射了
爱乌及屋→爱屋及
安兵不动→按兵不动动

【正确对称】:

幅射→辐射
爱乌及屋→爱屋及乌
安兵不动→按兵不动

词组太多,逐个找起来就麻烦了。

谢谢batman!
作者: batman    时间: 2012-9-27 23:37

这个用批实现起来

相当相当蛋疼。。。
作者: 每天几分    时间: 2012-9-28 11:32

回复 2# batman


    不能实现么。。先减去对称的,再导出应该很容易的啊。

思路应该是这样的吧:
  1. ^[\u4e00-\u9fa5]{2}→[\u4e00-\u9fa5]{2}$
  2. ^[\u4e00-\u9fa5]{3}→[\u4e00-\u9fa5]{3}$
  3. ^[\u4e00-\u9fa5]{4}→[\u4e00-\u9fa5]{4}$
  4. ^[\u4e00-\u9fa5]{5}→[\u4e00-\u9fa5]{5}$
  5. ^[\u4e00-\u9fa5]{6}→[\u4e00-\u9fa5]{6}$
复制代码

作者: batman    时间: 2012-9-28 14:37

原来以为要拼音对称。。。
如此以来就容易了(适应于26个字符以内的词组比对)
  1. @echo off&setlocal enabledelayedexpansion
  2. set "code=abcdefghijklmnopqrstuvwxyz"
  3. (for /f "tokens=1,2 delims=→" %%a in (a.txt) do (
  4.   set "str=%%a%code%"&set "var=%%b%code%"
  5.   if "!str:~26!" neq "!var:~26!" echo %%a→%%b
  6. ))>list.txt
  7. start list.txt
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2