право не работает, но слева находится в положении: абсолютное;

Я не понимаю, почему все остальные предлагают такие сложные регулярные выражения или такой длинный код. По сути, вы хотите захватить два типа вещей из вашей строки: последовательности символов, которые не являются пробелами или кавычками, и последовательности символов, которые начинаются и заканчиваются цитатой, без кавычек между ними, для двух видов кавычек. Вы можете легко сопоставить эти вещи с этим регулярным выражением:

[^\s"']+|"([^"]*)"|'([^']*)'

Я добавил группы захвата, потому что вам не нужны кавычки в списке.

Этот код Java создает список, добавив группу захвата, если она соответствует, чтобы исключить кавычки, и добавление общего соответствия регулярному выражению, если группа захвата не совпала (несогласованное слово было сопоставлено).

List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile("[^\\s\"']+|\"([^\"]*)\"|'([^']*)'");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    if (regexMatcher.group(1) != null) {
        // Add double-quoted string without the quotes
        matchList.add(regexMatcher.group(1));
    } else if (regexMatcher.group(2) != null) {
        // Add single-quoted string without the quotes
        matchList.add(regexMatcher.group(2));
    } else {
        // Add unquoted word
        matchList.add(regexMatcher.group());
    }
} 

t mind с кавычками в возвращенном списке, вы можете использовать гораздо более простой код:

List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile("[^\\s\"']+|\"[^\"]*\"|'[^']*'");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    matchList.add(regexMatcher.group());
} 
0
задан j.xiang 28 February 2019 в 10:06
поделиться

1 ответ

@ j.xiang,

Я настоятельно рекомендую вам прочитать: Документы MDN относительно позиционирования. Чтобы ответить на ваш вопрос о том, почему ваш код не работает и почему:

Абсолютно позиционированный элемент больше не существует в обычном потоке макета документа. Вместо этого он находится на своем собственном слое отдельно от всего остального. Это очень полезно: это означает, что мы можем создавать отдельные функции пользовательского интерфейса, которые не влияют на положение других элементов на странице. Например, всплывающие информационные окна и управляющие меню; опрокидывающиеся панели; Функции пользовательского интерфейса, которые можно перетаскивать в любое место на странице; и так далее ...

Во-вторых, обратите внимание, что положение элемента изменилось - это потому, что верхнее, нижнее, левое и правое ведут себя по-разному с абсолютным позиционированием. Вместо указания направления, в котором должен перемещаться элемент, они указывают расстояние, на которое должен быть элемент, от сторон каждого содержащего элемента. Таким образом, в этом случае мы говорим, что абсолютно позиционированный элемент должен располагаться в 30 пикселях от вершины «содержащего элемента» и в 30 пикселях слева.

Теперь вы, возможно, уже были знакомы с приведенным выше утверждением, которое подводит нас к причине и контексту позиционирования.

Если ни один из элементов-предков не имеет явно определенного свойства положения, то по умолчанию все элементы-предки будут иметь статическую позицию. В результате абсолютно позиционированный элемент будет содержаться в начальном содержащем блоке. Начальный содержащий блок имеет размеры области просмотра, а также является блоком, который содержит элемент. Проще говоря, абсолютно позиционированный элемент будет содержаться вне элемента и позиционируется относительно исходного окна просмотра.

Позиционированный элемент вложен в источник HTML, но в окончательном макете он находится на расстоянии 30 пикселей от верхнего и левого края края страницы. Мы можем изменить контекст позиционирования - к какому элементу позиционируется абсолютно позиционированный элемент. Это делается путем установки позиционирования на одном из предков элемента - на один из элементов, внутри которого он вложен (вы не можете расположить его относительно элемента, внутри которого он не вложен). Чтобы продемонстрировать это, добавьте следующую декларацию в ваше правило тела:

   position: relative;

Поэтому добавление position: relative; в ваш класс .act должно решить вашу конкретную проблему.

Надеюсь, это поможет, снова начните читать на сайте MDN , это бесценный ресурс.

0
ответ дан Mehrad 28 February 2019 в 10:06
поделиться