gpt4 book ai didi

java - 正则表达式匹配 ResourceBundle

转载 作者:行者123 更新时间:2023-12-04 06:33:59 28 4
gpt4 key购买 nike

我需要一个正则表达式来匹配 ResourceBundle 的文件名,遵循格式 name_lo_CA_le.properties .它应该只匹配文件名中包含区域设置部分的包,并且名称部分不应有下划线。

经过数小时的实验,我得出了以下结论:

^[a-zA-Z]+(_([a-z]{2}(_[A-Z]{0,2})?|[a-z]{0,2}(_[A-Z]{2})?){1}(_\\w*)?){1}\\.properties$

它似乎不适用于所有情况:
"bundle.properties".match(...);               // false - correct
"bundle_.properties".match(...); // false - correct
"bundle_en.properties".match(...); // true - correct
"bundle__US.properties".match(...); // true - correct
"bundle_en_US.properties".match(...); // true - correct
"bundle_en__Windows.properties".match(...); // false!
"bundle__US_Windows.properties".match(...); // true - correct
"bundle_en_US_Windows.properties".match(...); // true - correct

我完全不知道如何从这里开始。这是我在括号部分背后的推理:
(...){1}完全匹配一个语言环境部分。
(_([a-z]{2}(_[A-Z]{0,2})?|[a-z]{0,2}(_[A-Z]{2})?){1}与两个字符的语言代码和可能为零且最多 2 个字符的国家/地区代码或其他方式完全匹配。
(_\\w*)?匹配一个变体或不匹配。

知道如何修复和/或改进这个正则表达式吗?

最佳答案

这匹配所有示例:

^[a-zA-Z\_\.]+[A-Z]{0,2}[a-zA-Z\_\.]*.properties$

关于java - 正则表达式匹配 ResourceBundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5055249/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com