我想在每个大写字母之前使用strsplitat 模式并使用积极的前瞻。然而它每次都会分裂,我对此感到困惑。这个正则表达式与 不兼容吗?为什么会这样以及需要改变什么?strsplit
strsplit('AaaBbbCcc', '(?=\\p{Lu})', perl=TRUE)[[1]]
strsplit('AaaBbbCcc', '(?=[A-Z])', perl=TRUE)[[1]]
strsplit('AaaBbbCcc', '(?=[ABC])', perl=TRUE)[[1]]
# [1] "A" "aa" "B" "bb" "C" "cc"
Run Code Online (Sandbox Code Playgroud)
预期结果:
# [1] "Aaa" "Bbb" "Ccc"
Run Code Online (Sandbox Code Playgroud)
在演示中它实际上看起来不错。
理想情况下,它应该在每个骆驼案例之前分裂,例如Aa和不AA;有\\p{Lt},但这似乎根本不起作用。
strsplit('AaaABbbBCcc', '(?=\\p{Lt})', perl=TRUE)[[1]]
# [1] "AaaABbbBCcc"
Run Code Online (Sandbox Code Playgroud)
预期结果:
# [1] "AaaA" "BbbB" "Ccc"
Run Code Online (Sandbox Code Playgroud)
看来通过添加(?!^)就可以得到想要的结果了。
strsplit('AaaBbbCcc', "(?!^)(?=[A-Z])", perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
对于骆驼的情况我们可以做
strsplit('AaaABbbBCcc', '(?!^)(?=\\p{Lu}\\p{Ll})', perl=TRUE)[[1]]
strsplit('AaaABbbBCcc', '(?!^)(?=[A-Z][a-z])', perl=TRUE)[[1]] ## or
# [1] "AaaA" "BbbB" "Ccc"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |