Tag: regex

正则表达式操作的优先级

我写了一些java代码将字符串拆分为字符串数组。 首先,我使用正则表达式模式”\\,\\,|\\,”拆分该字符串,然后使用模式”\\,|\\,\\,”拆分。 为什么第一个输出和第二个输出之间有区别? public class Test2 { public static void main(String[] args){ String regex1 = “\\,\\,|\\,”; String regex2 = “\\,|\\,\\,”; String a = “20140608,FT141590Z0LL,0608103611018634TCKJ3301000000018667,3000054789,IDR1742630000001,80507,1000,6012,TCKJ3301,6.00E+12,ID0010015,WADORI PURWANTO,,3000054789”; String ss[] = a.split(regex1); int index = 0; for(String m : ss){ System.out.println((index++)+ “: “+m+”|”); } } } 使用regex1时的输出: 0: 20140608| 1: FT141590Z0LL| 2: 0608103611018634TCKJ3301000000018667| 3: 3000054789| 4: IDR1742630000001| 5: […]

基于空格和java中匹配引号的正则表达式拆分字符串

我有一个字符串,我需要根据空格和完全匹配的引号进行拆分。 如果 string = “It is fun \”to write\” regular\”expression” 拆分后,我想要的结果是: 它 是 开玩笑 “来写” 定期 “表达 正常的表达式,我来到一些接近这样做的事情是: STRING_SPLIT_REGEXP = “[^\\s\”‘]+|\”([^\”]*)\”|'([^’]*)'” 提前谢谢你的答案。

Java String.replaceAll()引用最新找到的组

Javadoc说$ 1,$ 2等可以用来引用匹配组,但是在使用String.replaceAll()时如何引用替换字符串中最新找到的组? 即,有一个字符串”aaabbbaa”和正则表达式”a+” ,我希望能够执行类似s.replaceAll(“a+”, “$\n”)来获取”aaa\nbbbaa\n” ,但Java给了我Illegal group reference 。

需要更改正则表达式以获得额外的后缀标准

所以我有这个代码: Pattern pattern = Pattern.compile(“\\d*(\\s\\d+\\.)*\\s*[-\\+\\*/\\$£]”); String input = “4.0 5.0 2.0 / + 7.0 – 11.0 34.0 2.0 / 3.0 / 1.0 * +”; Matcher matcher = pattern.matcher(input); List output = new ArrayList(); while (matcher.find()) { output.add(matcher.group()); } 当我正在解析整数时,正则表达式当然没问题,但我现在需要它考虑到可以有一个。 代表一个浮点。 想知道是否有人可以帮我添加这个 预期产量应为: 4.0 5.0 2.0 / + 7.0 – 11.0 34.0 2.0 / 3.0 / […]

替换所有方法抛出PatternSyntaxException

看下面的代码: String comment = “1)FCR pick up in Hong Kong2)Local charges will be paiy in Hong Kong & in HK$.3)Booking:virginiawong@fahkco.com.hk4)FCR&DOC:emilywu@fahkco.com.hkTel:00852-23021977Fax:00852-2730217Transaction865320submittedVirginiaWong(T1281954U005) and Status is INCMP on 10-JUN-11 11.28.45.764386 PM -05:00”; //comment = comment.replaceAll(“\\)”, “\\\\)”); //comment = comment.replaceAll(“\\(“, “\\\\(“); if(comment == null || comment.length() < 100) { System.out.println(); } String[] strArray = comment.split(" "); for (int i […]

Java Scanner分隔符用法

我想为扫描程序指定分隔符,该分隔符在某些模式上分割,但不会从标记中删除该模式。 我似乎无法使这项工作,因为正则表达式识别的任何东西也被作为分隔符的一部分被吃掉。 有什么建议? 我的具体问题,我的文件看起来像: text/numbers mix numbers numbers text/numbers mix numbers numbers numbers . . 我想从文本/数字mix +行中分离,直到下一个文本/数字混合。 我有正则表达式来识别它们,但正如所述,使用它作为分隔符吃掉我想要的部分。 编辑:代码添加: static final String labelRegex=”\\s*[^01\\s*]\\w+\\s*”; static final Pattern labelPattern = Pattern.compile(labelRegex, Pattern.MULTILINE); 是我用来识别文本/数字位的模式(我知道我的数字行包含由空格分隔的所有1/0)。 初始化扫描仪时: stateScan = new Scanner(new BufferedReader(new FileReader(source))); stateScan.useDelimiter(labelPattern); 吃标签,然后离开行。 我目前有一个工作实现,它在同一来源的两个缓冲文件读取器上启动两个扫描程序,一个按状态拆分,另一个按标签拆分。 我真的希望它只是一个抓住标签+状态。

使用起始字符串和结束字符串从长字符串中提取子字符串?

我有这个长字符串(它是一个长的连续字符串): Home address H.NO- 12 SECTOR- 12 GAUTAM BUDH NAGAR NOIDA- 121212, UTTAR PRADESH INDIA +911112121212 Last Updated: 12-JUN-12 Semester/Term-time Accommodation Type: Hall of residence (private provider) Semester/Term-time address A121A SOME APPARTMENT SOME LANE CITY COUNTY OX3 7FJ +91 1212121212 Last Updated: 12-SEP-12 Mobile Telephone Number : 01212121212 如果查看上面的字符串,可以生成以下模式: last_updated_text> 我想提取这个字符串的特定部分,如: 1. H.NO- 12 SECTOR- […]

将key = value的String解析为Map

我正在使用一个API给我一个XML,我需要从一个标签获取一个实际上是字符串的地图。 例: 有 Billable=7200,Overtime=false,TransportCosts=20$ 我需要 [“Billable”=”7200″,”Overtime=false”,”TransportCosts”=”20$”] 问题是字符串是完全动态的,所以,它可能就像 Overtime=true,TransportCosts=one, two, three Overtime=true,TransportCosts=1= 1,two, three,Billable=7200 所以我不能用逗号分割,然后用等号分开。 是否可以使用正则表达式将类似字符串转换为地图? 到目前为止我的代码是: private Map getAttributes(String attributes) { final Map attr = new HashMap(); if (attributes.contains(“,”)) { final String[] pairs = attributes.split(“,”); for (String s : pairs) { if (s.contains(“=”)) { final String pair = s; final String[] keyValue = pair.split(“=”); attr.put(keyValue[0], […]

模式没有按需分割,无法用+分割

我有以下代码: Pattern pattern = Pattern.compile(“\\d+(?:\\.\\d+)?(\\s\\d+(?:\\.\\d+)?)*\\s*[-\\+\\*/\\$£]”); String input = “4.0 5.0 2.0 / + 7.0 – 11.0 34.0 2.0 / 3.0 / 1.0 * +”; Matcher matcher = pattern.matcher(input); List output = new ArrayList(); while (matcher.find()) { output.add(matcher.group()); } 编译的模式经历了多次迭代,在它的当前迭代中,它将以下内容添加到列表中: [4.0 5.0 2.0 /, 7.0 -, 11.0 34.0 2.0 /, 3.0 /, 1.0 *] 它应该被所有操作拆分并将操作保持在拆分字符串中,所以我希望得到以下输出: [4.0 […]

Java:用其他不同的字符替换一组字符

我应该做一个自定义装饰器,所以我可以在控制台和文件的输入中替换它们: 一组具有特定字符的字符(例如char[] x = {‘a’, ‘b’}其中char y = ‘*’ ,因此a和b变为* 一组具有另一组配对字符的字符(例如char[] x = {‘a’, ‘b’}其中char[] y = {‘c’, ‘d’} ,因此a变为c , b变为d 最好的方法是什么? 我用正则表达式创建了第一个( String replaceAll = s.replaceAll(“(a|b)”, String.valueOf(replacement)); ),但这不适用于第二种情况。 有没有办法在一个正则表达式中制作第二个案例? 我应该做一个HashMap吗?