Мне посчастливилось установить font-size: 0
внешнего элемента, а font-size
селектора :after
- все, что мне нужно.
Замена
^.*?(?=[A-Z][a-z])
с пустой строкой. Это работает на вход ASCII. Для входа неASCII (Unicode, другие языки), применяются различные стратегии.
Объяснение
.*? Everything, until
(?= followed by
[A-Z] one of A .. Z and
[a-z] one of a .. z
)
Java поддерживающий Unicode вариант был бы этим:
^.*?(?=\p{Lu}\p{Ll})
затем можно сделать что-то вроде этого
'.*([A-Z][a-z].*)\s*'
.* matches anything
( [A-Z] #followed by an uper case char
[a-z] #followed by a lower case
.*) #followed by anything
\s* #followed by zeror or more white space
, Который является тем, что Вы ищете, я думаю
Я знаю, что мое мнение об этом действительно не настолько популярно так Вы, парни могут вниз-выбрать меня в забвение, если Вы хотите, но я должен разглагольствовать немного (и это содержит решение, просто не в способе, которым плакат попросил).
я действительно не добираюсь, почему люди переходят к регулярным выражениям так быстро.
я сделал большой строковый парсинг (Привыкший к экранному царапанью vt100 экраны меню), и я никогда не находил единственный случай, где Регулярные выражения были бы намного легче, чем просто написание кода. (Возможно, пара была бы немного легче, но не очень).
я отчасти понимаю, что они, как предполагается, легче, после того как Вы знаете их - но Вы видите, что кто-то задает вопрос как это и понимает, что они не легки для каждого программиста просто добраться путем поглядывания на него. Если это стоит 1 программисту где-нибудь по линии 10 минут мысли, это имеет огромный чистый убыток просто кодирование его даже при взятии 5 минут для записи 5 строк.
, Таким образом, это испытывает необходимость в документации - и если кто-то, кто на том же самом уровне, сталкивается с ним, он не сможет изменить его без ведома вне его домена, даже с документацией.
я имею в виду, должен ли плакат был спросить относительно тривиального случая - затем там, просто не такая вещь как тривиальный случай.
public String getRealText(String scanMe) {
for(int i=0 ; i < scanMe.length ; i++)
if( isUpper(scanMe[i]) && isLower(scanMe[i+1]) )
return scanMe.subString(i);
return null; }
я подразумеваю, что это - 5 строк, но это просто, читаемо, и быстрее, чем большинство (все?) синтаксические анализаторы РЕ. После того как Вы перенесли регулярное выражение в метод и прокомментировали это, разница в размерах не измерима. Разница во времени - хорошо для плаката, это, очевидно, было бы НАМНОГО меньше времени - как это могло бы быть для следующего парня, который сталкивается с его кодом.
И эта строковая операция один из тех, которые еще легче в C с указателями - и это было бы еще более быстро, так как функции тестирования являются макросами в C.
Между прочим, удостоверьтесь, что Вы ищете пространство во втором слоте, не только переменную нижнего регистра, иначе Вы пропустите любые строки, запускающиеся со слов A или меня.
Разбудив немного, Вы ничего не должны удалить или даже создать подгруппу - просто находят шаблон выраженным в другом месте в ответах. Вот полный пример:
import java.util.regex.*;
public class Test
{
public static void main(String args[])
{
Pattern pattern = Pattern.compile("[A-Z][a-z].*");
String original = "THIS IS A TEST - - +++ This is a test";
Matcher match = pattern.matcher(original);
if (match.find())
{
System.out.println(match.group());
}
else
{
System.out.println("No match");
}
}
}
РЕДАКТИРОВАНИЕ: Исходный ответ
Это похоже, он делает правильную вещь:
import java.util.regex.*;
public class Test
{
public static void main(String args[])
{
Pattern pattern = Pattern.compile("^.*?([A-Z][a-z].*)$");
String original = "THIS IS A TEST - - +++ This is a test";
String replaced = pattern.matcher(original).replaceAll("$1");
System.out.println(replaced);
}
}
В основном прием не должен игнорировать все перед надлежащим словом - это должно сгруппировать все от надлежащего слова вперед и заменить целый текст той группой.
Вышеупомянутое перестало бы работать с "*** FOO *** I am fond of peanuts"
, потому что "I" не будут считать надлежащим словом. Если Вы хотите зафиксировать это, измениться [a-z] на [a-z\s], который будет допускать пробел вместо буквы.