猿问

使用正则表达式切换多语言子字符串位置

带有立陶宛字母的原始输入:


Ą.BČ

Ą.BČ D Ę

Ą. BČ

Ą. BČ D Ę

Ą BČ

Ą BČ D Ę

Examples below should not be affected.

ĄB ČD DĘ

预期结果:


BČ Ą.

BČ Ą. D Ę

BČ Ą. 

BČ Ą. D Ę

BČ Ą 

BČ Ą D Ę

ĄB ČD DĘ

我试过的:


^(.\.? *)([\p{L}\p{N}\p{M}]*)$

With ReplaceAllString substitution like so

$2 $1

我尝试了各种模式,但这是我现在能想到的最好的模式。它设法捕获第 1、第 3 和第 5 行并成功替换,如下所示:(除了行尾的一些额外空格)


BČ Ą.

Ą.BČ D Ę

BČ Ą. 

Ą. BČ D Ę

BČ Ą 

Ą BČ D Ę

ĄB ČD DĘ

解释:


有一组数据具有不同的基础基本结构条目[FIRST NAME FIRST LETTER][LASTNAME],我希望将其理想地带到[LASTNAME][SPACE][FIRST NAME FIRST LETTER][DOT]?


链接到正则表达式101: 正则表达式101


最终解决方案:


^([\p{L}\p{N}\p{M}](?:\. *| +))([\p{L}\p{N}\p{M}]+)

    With ReplaceAllString substitution like so

    $2 $1


青春有我
浏览 88回答 1
1回答

千万里不及你

对于您的示例数据,您可以省略锚点$并匹配一个点,后跟可选空格,或者 1 个或多个空格。为了防止字符类出现空匹配,您可以使用+而不是重复它 1 次或更多次*^(.(?:\. *| +))([\p{L}\p{N}\p{M}]+)查看正则表达式演示请注意,.可以匹配任何字符,包括空格。您也可以将点更改为单个[\p{L}\p{N}\p{M}]
随时随地看视频慕课网APP

相关分类

Go
我要回答