Регулярное выражение для (1ab09cs001)

1

Я хочу выделить строку, т.е. комбинацию имени субъекта с тематическим кодом, на две части в java. Оригинальная строка может быть НИЧЕГО, как "ABC (01dfv)", "BCD (sdfsd) и т.д.) Код темы, всегда написанный в(), и имя объекта всегда будет префикс скобки. Пример:

String originalString = "Computer Science (06cs43)"
String subjectName="Computer Science"
String subjectCode="06cs43"

Я использую string.replaceAll, но не могу найти регулярное выражение для извлечения или замены кода темы.

Размер тематического кода не фиксирован.

  • 0
    Зачем вам нужно регулярное выражение, если строка всегда "Computer Science (06cs43)" ? Или нет? Затем, пожалуйста, опишите формат имен и кодов, чтобы сделать из него подходящее регулярное выражение.
  • 0
    Почему бы просто не разделить на WS, нет необходимости в регулярном выражении здесь ...
Теги:
replaceall

2 ответа

2
Лучший ответ

Здесь нет необходимости использовать регулярное выражение. Вы можете просто сделать это

String orS="Computer Science (06cs43)";
String subjectName=orS.subString(0,orS.indexOf('(')-1);
String subjectCode=orS.subString(orS.indexOf('('),orS.length()-2)
  • 0
    Это прекрасно сработало для меня. Это был мой первый вопрос о stackoverflow и thanx @ usama8800, исправляющем логику и упрощающем создание.
2

Просто попробуйте с регулярным выражением followinf:

"^([^(]+) \\(([^)]+)\\)$"

Или лучше:

String originalString = "Computer Science (06cs43)";

String[] parts = originalString.split("\\(");

String subjectName = parts[0].trim();
String subjectCode = null;
if (parts.length > 1) {
    subjectCode = parts[1].replaceAll("\\)$", "");
}
  • 0
    +1 за второй подход :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню