1bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes/* Licensed to the Apache Software Foundation (ASF) under one or more 2bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * contributor license agreements. See the NOTICE file distributed with 3bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * this work for additional information regarding copyright ownership. 4bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 5bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * (the "License"); you may not use this file except in compliance with 6bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * the License. You may obtain a copy of the License at 7bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * 8bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * 10bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * Unless required by applicable law or agreed to in writing, software 11bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * See the License for the specific language governing permissions and 14bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * limitations under the License. 15bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes */ 16bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 17bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughespackage org.apache.harmony.tests.java.util.regex; 18bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 19bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughesimport java.util.regex.Matcher; 20bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughesimport java.util.regex.Pattern; 21bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughesimport java.util.regex.PatternSyntaxException; 22bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 23bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughesimport junit.framework.TestCase; 24bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 25bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes/** 26bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * Tests Matcher methods 27bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes */ 28bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes@SuppressWarnings("nls") 29bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughespublic class Matcher2Test extends TestCase { 30bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes public void test_toString() { 31bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes Pattern p = Pattern.compile("foo"); 32bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes Matcher m = p.matcher("bar"); 33bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertNotNull(m.toString()); 34bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 35bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 36bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes public void testErrorConditions() throws PatternSyntaxException { 37bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes // Test match cursors in absence of a match 38bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes Pattern p = Pattern.compile("foo"); 39bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes Matcher m = p.matcher("bar"); 40bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertFalse(m.matches()); 41bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 42bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 43bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.start(); 44bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 45bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 46bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 47bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 48bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 49bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.end(); 50bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 51bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 52bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 53bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 54bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 55bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.group(); 56bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 57bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 58bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 59bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 60bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 61bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.start(1); 62bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 63bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 64bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 65bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 66bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 67bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.end(1); 68bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 69bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 70bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 71bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 72bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 73bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.group(1); 74bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 75bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 76bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 77bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 78bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes // regression test for HARMONY-2418 79bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 80bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.usePattern(null); 81bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalArgumentException expected"); 82bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalArgumentException e) { 83bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes // PASSED 84bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 85bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 86bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 87bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes public void testErrorConditions2() throws PatternSyntaxException { 88bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes // Test match cursors in absence of a match 89bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes Pattern p = Pattern.compile("(foo[0-9])(bar[a-z])"); 90bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes Matcher m = p.matcher("foo1barzfoo2baryfoozbar5"); 91bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 92bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertTrue(m.find()); 93bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(0, m.start()); 94bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(8, m.end()); 95bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(0, m.start(1)); 96bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(4, m.end(1)); 97bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(4, m.start(2)); 98bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(8, m.end(2)); 99bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 100bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 101bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.start(3); 102bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 103bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 104bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 105bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 106bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 107bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.end(3); 108bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 109bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 110bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 111bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 112bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 113bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.group(3); 114bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 115bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 116bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 117bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 118bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 119bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.start(-1); 120bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 121bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 122bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 123bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 124bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 125bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.end(-1); 126bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 127bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 128bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 129bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 130bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 131bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.group(-1); 132bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 133bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 134bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 135bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 136bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertTrue(m.find()); 137bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(8, m.start()); 138bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(16, m.end()); 139bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(8, m.start(1)); 140bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(12, m.end(1)); 141bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(12, m.start(2)); 142bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertEquals(16, m.end(2)); 143bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 144bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 145bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.start(3); 146bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 147bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 148bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 149bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 150bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 151bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.end(3); 152bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 153bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 154bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 155bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 156bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 157bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.group(3); 158bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 159bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 160bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 161bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 162bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 163bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.start(-1); 164bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 165bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 166bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 167bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 168bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 169bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.end(-1); 170bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 171bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 172bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 173bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 174bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 175bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.group(-1); 176bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException expected"); 177bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 178bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 179bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 180bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes assertFalse(m.find()); 181bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 182bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 183bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.start(3); 184bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 185bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 186bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 187bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 188bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 189bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.end(3); 190bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 191bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 192bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 193bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 194bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 195bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.group(3); 196bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 197bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 198bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 199bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 200bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 201bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.start(-1); 202bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 203bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 204bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 205bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 206bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 207bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.end(-1); 208bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 209bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 210bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 211bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 212bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 213bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes m.group(-1); 214bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IllegalStateException expected"); 215bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IllegalStateException e) { 216bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 217bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 218bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes 219bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes /* 220bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes * Regression test for HARMONY-997 221bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes */ 222bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes public void testReplacementBackSlash() { 223bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes String str = "replace me"; 224bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes String replacedString = "me"; 225bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes String substitutionString = "\\"; 226bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes Pattern pat = Pattern.compile(replacedString); 227bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes Matcher mat = pat.matcher(str); 228bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes try { 229bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes mat.replaceAll(substitutionString); 230bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes fail("IndexOutOfBoundsException should be thrown"); 231bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } catch (IndexOutOfBoundsException e) { 232bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 233bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes } 234bfd68b1dd4409f61fbc6800ba61f4605ad57945bElliott Hughes} 235