Чтобы найти первую букву после знака $
доллара, используя регулярное выражение, вы можете использовать следующее регулярное выражение:
\$\P{L}*\p{L}
Пояснение:
\$ Match a $ dollar sign
\P{L}* Match 0 or more characters that are not Unicode letters
\p{L} Match a Unicode letter
Индекс буквы является последним символом совпадающей подстроки, то есть одним символом перед end()
совпадения.
Пример
String text = "hello$5. 00Bla bla words that don't matter";
Matcher m = Pattern.compile("\\$\\P{L}*\\p{L}").matcher(text);
if (m.find()) {
int idx = m.end() - 1;
System.out.println("Letter found at index " + idx + ": '" + text.substring(idx) + "'");
}
выход
Letter found at index 11: 'Bla bla words that don't matter'
UPDATE
Кажется, что фактический вопрос несколько отличался от ответа выше, поэтому для захвата текста от $
знака доллара (включительно) и всех последующих символов до первой буквы (исключая) или конца строки используйте это регулярное выражение:
\$\P{L}*
* +1032 * Пример * +1034 *
String text = "hello$5. 00Bla bla words that don't matter";
Matcher m = Pattern.compile("\\$\\P{L}*").matcher(text);
if (m.find()) {
String money = m.group();
System.out.println("money = \"" + money + "\"");
}
выход
money = "$5. 00"