如何在驼峰式大小写的每个大写字母前使用 `strsplit`?
How to use `strsplit` before every capital letter of a camel case?
我想在每个大写字母之前的模式下使用strsplit
,并使用正向预测。然而,它也会在 after 之后分裂,我对此感到困惑。此正则表达式与 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"
预期结果:
# [1] "Aaa" "Bbb" "Ccc"
在 Demo 中它实际上看起来不错。
理想情况下,它应该在每个 camel case 之前拆分,例如Aa
而不是 AA
;有 \p{Lt}
但这似乎根本不起作用。
strsplit('AaaABbbBCcc', '(?=\p{Lt})', perl=TRUE)[[1]]
# [1] "AaaABbbBCcc"
预期结果:
# [1] "AaaA" "BbbB" "Ccc"
看来加上(?!^)
就可以得到想要的结果了
strsplit('AaaBbbCcc', "(?!^)(?=[A-Z])", perl=TRUE)
对于骆驼案例我们可能会做
strsplit('AaaABbbBCcc', '(?!^)(?=\p{Lu}\p{Ll})', perl=TRUE)[[1]]
strsplit('AaaABbbBCcc', '(?!^)(?=[A-Z][a-z])', perl=TRUE)[[1]] ## or
# [1] "AaaA" "BbbB" "Ccc"
我想在每个大写字母之前的模式下使用strsplit
,并使用正向预测。然而,它也会在 after 之后分裂,我对此感到困惑。此正则表达式与 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"
预期结果:
# [1] "Aaa" "Bbb" "Ccc"
在 Demo 中它实际上看起来不错。
理想情况下,它应该在每个 camel case 之前拆分,例如Aa
而不是 AA
;有 \p{Lt}
但这似乎根本不起作用。
strsplit('AaaABbbBCcc', '(?=\p{Lt})', perl=TRUE)[[1]]
# [1] "AaaABbbBCcc"
预期结果:
# [1] "AaaA" "BbbB" "Ccc"
看来加上(?!^)
就可以得到想要的结果了
strsplit('AaaBbbCcc', "(?!^)(?=[A-Z])", perl=TRUE)
对于骆驼案例我们可能会做
strsplit('AaaABbbBCcc', '(?!^)(?=\p{Lu}\p{Ll})', perl=TRUE)[[1]]
strsplit('AaaABbbBCcc', '(?!^)(?=[A-Z][a-z])', perl=TRUE)[[1]] ## or
# [1] "AaaA" "BbbB" "Ccc"