如何使用正则表达式更改点后的行顺序?
现在,在一个由个人或社会背景主导的背景下,它可以描述转移性或病理性问题。从现代视角、社会认知和关怀解释迁移模块来看,我们可以通过自我之旅找到出口。我们不能再忍受这种痛苦,我们必须要小心谨慎。从这种不一致中可以推断出新的人格结构与前一个人的相似性 [5]。从这个角度来看,人们在关注的焦点在于照明模块的生成,以及重复提出当前关系的问题。
应该转换成如下形式:
从这种不一致中可以推断出新的人格结构与前一个人的相似性 [5]。从这个角度来看,人们在关注的焦点在于照明模块的生成,以及重复提出当前关系的问题。我们不能再忍受这种痛苦,我们必须要小心谨慎。现在,在一个由个人或社会背景主导的背景下,它可以描述转移性或病理性问题。从现代视角、社会认知和关怀解释迁移模块来看,我们可以通过自我之旅找到出口。
我自己也考虑过这个,但效果不是很好:
搜索:(?-s)^(.+?\.)(\w+)((?1))
替换为:\4\2\1\3
答案1
这将重新排序句子(任意数量),但并不是真正随机的。
- Ctrl+H
- 找什么:
(?:^|\G)(.+?\.)\h*((?1))(?:\h*((?1)))?
- 用。。。来代替:
$2(?3 $3 : )$1
- 检查环绕
- 检查正则表达式
- Replace all
解释:
(?: # non capture group
^ # beginning of line
| # OR
\G # restart from last match position
) # end group
(.+?\.) # group 1, 1 or more any character, not greedy, followed by a dot
\h* # 0 or more horizontal spaces
((?1)) # group 2, same pattern as group 1
(?: # non capture group
\h* # 0 or more horizontal spaces
((?1)) # group 3, same pattern as group 1
)? #end group, optional
替代品:
$2 # content of group 2
(?3 $3 : ) # if group 3 exists then content of group 3, else a space
$1 # content of group 3
给定示例的结果:
从现代视角、社会认知和关怀解释迁移模块来看,我们可以通过自我之旅找到出口。我们不能再忍受这种痛苦,我们必须要小心谨慎。现在,在一个由个人或社会背景主导的环境中,它可以描述病理问题的转移。从这个角度来看,人们在关注的焦点在于重复当前关系的提示。从这种不一致中可以推断出新的人格结构与前一个人的相似性 [5]。
屏幕截图:
答案2
您可以使用这个 Perl 单行程序来处理任意数量的句子并以随机顺序打印所有句子。
perl -nE 'BEGIN{use List::Util qw/shuffle/;$/="."}chomp;s/^\h*//;push @l,$_ if length$_>2;END{say join(". ",shuffle@l),"."}' file.txt
输出:
从现代视角、社会认知和关怀解释迁移模块来看,我们可以通过自我之旅找到出口。我们不能再忍受这种痛苦,我们必须要小心谨慎。从这种不一致中可以推断出新的人格结构与前一个人的相似性 [5]。现在,在一个由个人或社会背景主导的背景下,它可以描述转移性或病理性问题。从这个角度来看,人们在关注的焦点在于照明模块的生成,以及重复提出当前关系的问题。
解释:
perl -nE # invoke perl interpreter
' # begin code
BEGIN{ # block executed before anything
use List::Util qw/shuffle/; # use a module
$/="." # define input separator as a dot
} # end block
chomp; # remove separator
s/^\h*//; # remove horizontal whitespace at the beginning or a sentence
push @l,$_ if length$_>2; # push the sentence in an array if its length is greater than 2
END{ # block executed at the end of the program
say join(". ",shuffle@l),"." # prints randomly each sentence
} # end block
' # end code
file.txt # file to be processed