【发布时间】:2014-03-03 05:35:02
【问题描述】:
拥有 excel 数据和公式,例如:
- (S10+S14+S18+S22+S26+S30+S34)
- E10+E11+SUM(E10;E14:E17)*E18-IF(E19
- SUM(E14:E19)
- S16*S15
等等。
我想从字符串中获取所有单元格引用。 就像在这个例子中:“E10+E11+SUM(E10;E14:E17)*E18-IF(E19
我想要像“E10 E11 ... E21”这样的输出子字符串或用“,”分隔。
我使用正则表达式进行了很多测试,但无法获得有效结果。 我正在使用此代码:
String formulaString = "E10+E11+SUM(E10;E14:E17)*E18-IF(E19<1,E20, E21)";
Pattern pattern = Pattern.compile("REGEX");
Matcher matcher = pattern.matcher(formulaString);
我尝试了以下正则表达式:
正则表达式:(\w+|)?\$?(?:\bXF[A-D]|X[A-E][A-Z]|[A-W][A-Z]{2}|[A-Z]{2}|[A-Z ])\$?(?:104857[0-6]|10485[0-6]\d|1048[0-4]\d{2}|104[0-7]\d{3}|10[ 0-3]\d{4}|[1-9]\d{1,5}|[1-9])d?\b(:\s?\$?(?:\bXF[A-D]| X[A-E][A-Z]|[A-W][A-Z]{2}|[A-Z]{2}|[A-Z])\$?(?:104857[0-6]|10485[0-6]\d |1048[0-4]\d{2}|104[0-7]\d{3}|10[0-3]\d{4}|[1-9]\d{1,5}| [1-9])d?\b)?
正则表达式:\$?\b([A-Z]|[A-H][A-Z]|I[A-V])\$?([1-9]\d{0,3}|[1-5]\ d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-6])\b([: \s]\$?\b([A-Z]|[A-H][A-Z]|I[A-V])\$?([1-9]\d{0,3}|[1-5]\d{ 4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-6])\b)?
对于某些公式,他们正在工作,但不是对所有的。
我希望任何人都可以帮助我或给我一个提示:)
【问题讨论】:
标签: java regex excel substring excel-formula