翻转括号


4

我有一些翻转括号的文字。例如,而不是(text-in-parentheses))text-in-parentheses(

是否有一种简单的方法来翻转文本中的所有括号?如果是这样,怎么样?

更新:这是一个纯文本文件,每个单个括号都被翻转。我正在使用Windows 7。


它是为了一切而翻转,还是只是在任何单个文档中的某些内容?你在使用哪种操作系统?(请用答案更新你的帖子)
nerdwaller

谢谢,我不是正则表达式的天才(我也不熟悉windows cmd / powershell) - 所以我打赌有人会打败我的答案。
nerdwaller

Answers:


6

电源外壳

简短版本

(Get-Content "in.txt" -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")" >> "out.txt"

也可能:

Set-Content "out.txt" ((Get-Content "in.txt" -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")")
  • in.txt
  • 写入out.txt(在第一个代码示例中水平滚动以查看行尾)

长版本

$in = "in.txt";
$out = "out.txt";

(Get-Content $in -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")" >> $out

也可能:

Set-Content $out ((Get-Content $in -raw) -replace "\(", "`0)" -replace "\)", "(" -replace "(`0\()", ")")

说明

请暂时忽略神秘的反斜杠 - 它们仅适用于在正则表达式中具有特殊含义的escpaing括号。

我们先更换的每次出现(NUL)(见NUL字符)。然后,我们)逐个替换(。作为最后一步,NUL(重新被替换)

使用这种方式,我们确保不进行“双重替换”,例如:

Initial string value:
(test)

After replacing "(" by ")"
)test)

After replacing ")" by "("
(test(

警告

该文件本身不能包含序列NUL)。这会导致我对Powershell脚本的误解,因为我使用NUL字符作为特殊指示器(例如,当使用绿色屏幕和穿绿色衣服时出现相同的情况)。


这就是我想要做的 - 但是在你身后,PS的新手看起来比CMD好多了。+1
nerdwaller 2013年

@nerdwaller谢谢。批处理中的字符串替换可能是编程拼图和代码高尔夫的一个很好的难题.SE虽然:)
ComFreek 2013年

3

我确信有一步一步的方法来做到这一点,但一个快速的方法是将所有一个paren切换到一个独特的字符,如^,然后将所有其他paren切换到正确的paren,然后切换特殊字符对阵对手。

例如在记事本中:

  1. 全部替换(用^
  2. 全部替换)(
  3. 全部替换^)

我要添加的是,而不是替换为^,替换为更随机的模式,如*!@#&!这在文本中更不可能出现。
Kinjal Dixit 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.