Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java正则表达式的堆栈溢出_Java_Regex_Stack Overflow - Fatal编程技术网

java正则表达式的堆栈溢出

java正则表达式的堆栈溢出,java,regex,stack-overflow,Java,Regex,Stack Overflow,我在验证大字符串字段的csv时收到stackoverflow 正则表达式: (?![^\",][^,]*\")(\"(\"\"|[^\"])*\"|[^\",]*),[0-9]* 目标字符串: Nuvi 1450LMT是Garmin公司生产的便携式全球定位系统接收器,它比该公司的标准1450和1450T型号具有更高的性能。包括免费终身地图和流量更新,该模型可以每三个月更新一次,以确保获得最新的位置信息。内置调频信号发射器可提供有关事故、施工和其他形式道路堵塞的最新交通信息,为用户提供足够的时间

我在验证大字符串字段的csv时收到stackoverflow

正则表达式:

(?![^\",][^,]*\")(\"(\"\"|[^\"])*\"|[^\",]*),[0-9]*
目标字符串:

Nuvi 1450LMT是Garmin公司生产的便携式全球定位系统接收器,它比该公司的标准1450和1450T型号具有更高的性能。包括免费终身地图和流量更新,该模型可以每三个月更新一次,以确保获得最新的位置信息。内置调频信号发射器可提供有关事故、施工和其他形式道路堵塞的最新交通信息,为用户提供足够的时间选择备用路线。包括背光5英寸触摸屏TFT显示屏,可提供清晰的视觉指示,并配有车道辅助技术,可提供准确使用哪条车道的虚拟第一人称指示。包括加拿大、美国和墨西哥的综合城市导航地图,提供二维和三维支持,以及超过600万用户选择的兴趣点。1450LMT还完全支持步行导航,CityXployer服务为各种主要城市提供公共汽车、铁路、电车和其他公共交通信息。使用EcoRoute模式可以确定燃油效率高的路线,而热修复预测卫星技术有助于在信号暂时丢失时保持最准确的位置信息。通过Garmin的照片连接服务支持照片导航,此外,还可以通过Garmin车库网站下载其他汽车标记和旁白语音。

功能5英寸背光TFT彩色触摸屏免费终身交通更新免费地图MicroSD卡支持语音提示车道辅助功能自动重新路由避免FM交通兼容性EcoRoute路由自定义兴趣点Garmin车库汽车标记器和语音定制,9

有人能帮助优化它吗。
你能优化使用所有格量词吗?我认为最好的建议是不要尝试使用正则表达式来解析CSV文件。任何形式的正则表达式都可能有无限多个分支点。。。从而导致病态输入字符串的堆栈溢出

更好的方法是为Java选择并使用一个合适的CSV库。检查此问题的答案:


您可以通过添加几个加号来消除该错误:

"(?![^\",][^,]*\")(\"(\"\"|[^\"]+)*\"|[^\",]+),[0-9]+"
                                ^           ^       ^
请注意,这些只是规则的加号,而不是所有格修饰语。第二个加号和第三个加号取代了星号,但真正不同的是第一个加号。[^\]+消耗了大部分文本,在我添加加号之前,它一次只消耗一个字符

但它仍然不匹配,它只会更快地失败。正则表达式用于将CSV字段与正确转义的引号匹配,如果我理解正确,您的问题是它们没有转义。这是一个更具挑战性的问题,但我想知道你是否真的需要处理这些内部引用。这不管用吗

".*?",\d+
…或作为Java字符串文字:

"\".*?\",\\d+"

还是您自己试图通过转义引号来更正字符串?

看起来stackoverflow将一些正则表达式转换为斜体。你能把它编辑成代码注释吗。向后搜索的第一个逗号或最后一个索引。