от
У меня есть файл в следующем формате: Данные Данные [Пуск] Данные, которые мне нужны [Конец] Данные Я бы хотел, чтобы захватить
Data I want
между
[Start]
и
[End]
теги с помощью регулярных выражений. Может кто-нибудь показать мне, как это может быть сделано?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

10 Ответы

0 голосов
от
У меня есть файл в следующем формате: Данные Данные [Пуск] Данные, которые мне нужны [Конец] Данные Я бы хотел, чтобы захватить
Data I want
между
[Start]
и
[End]
теги с помощью регулярных выражений. Может кто-нибудь показать мне, как это может быть сделано?
0 голосов
от
\[start\]\s*(((?!\[start\]|\[end\]).) )\s*\[end\]
Это должно, надеюсь, падение
[start]
и
[end]
маркеров, а также.
0 голосов
от
\[start\](.*?)\[end\]
Zhich будет поместить текст в центре в захват.
0 голосов
от
$text ="Data Data Data start Data i want end Data";
($content) = $text =~ m/ start (.*) end /;
print $content;
У меня была похожая проблема на некоторое время
0 голосов
от
Более полный анализ ошибок с использованием regex, чтобы найти соответствующие теги могут быть найдены по адресу: http://faq.perl.org/perlfaq4.html#How_do_I_find_matchi. В частности, следует знать, что вложенность тегов действительно нужен полноценный парсер для того, чтобы быть правильно истолкован. Обратите внимание, что чувствительность к регистру должны быть выключены для того, чтобы ответить на вопрос, как говорится. В Perl, это я модификатор:
$ echo "Data Data Data [Start] Data i want [End] Data" \
  | perl 

Другой трюк заключается в использовании *? Квантор, который выключает жадность захваченных матч. Например, если у вас есть несоответствие [конец] тег:

Data Data [Start] Data i want [End] Data [end]
вы, наверное, не хотите, чтобы захватить:
 Data i want [End] Data
0 голосов
от
В то время как вы можете использовать регулярные выражения для разбора данных между открывающим и закрывающим тегами, вы должны думать долго и трудно ли это путь вы хотите пойти. Причиной этого является потенциалом теги для гнезда: если вложенность тегов, может случится или может случиться, язык сказал, что больше не будет регулярного и регулярные выражения перестают быть правильный инструмент для синтаксического разбора. Во многих реализациях регулярных выражений, таких как библиотеки PCRE или регулярные выражения в Perl, поддержка откаты, которые могут быть использованы для достижения этой грубой силе. Но в нестандартном месте (в отличие от языка Perl) не поддерживает неограниченный откат, и это действительно может повлиять на то, что перерыв в странных отношениях, как только у вас слишком много тегов. Там очень часто приводятся в блоге, что обсуждает это больше, http://kore-nordmann.de/blog/do_NOT_parse_using_regexp.html (Google для его и проверить в настоящее время кэше, они, кажется, возникли некоторые простои)
0 голосов
от
Ну, если вы гарантируете, что каждая метка начала следует конечный тэг, то следующие будут работать.
\[start\](.*?)\[end\]
Однако, если у вас сложный текст, например, следующего:
[start] sometext [start] sometext2 [end] sometext [end]
тогда вы бы нарваться на проблемы с регулярным выражением. Теперь в следующем примере будет вытащить все горячие ссылки на странице:
'/
0 голосов
от
С помощью Perl можно окружить нужные вам данные с ()'S и вытащить его позже, возможно, в других языках есть подобная функция.
if ($s_output =~ /(data data data data START(data data data)END (data data)/) 
{
    $dataAllOfIt = $1;      # 1 full string
    $dataInMiddle = $2;     # 2 Middle Data
    $dataAtEnd = $3;        # 3 End Data
}
0 голосов
от
Обратитесь к этому вопросу, чтобы вытащить текст между тегами с пробелами и точками (
.
)
[\S\s]
-это тот, который я использовал Регулярное выражение, чтобы соответствовать любому символу, включая новые линии
0 голосов
от
Чтение текста в квадратных скобках [], т. е.[начало] и [конец] и проверить массив со списком значений. jsfiddle http://jsfiddle.net/muralinarisetty/r4s4wxj4/1/
var mergeFields = ["[sitename]",
                   "[daystoholdquote]",
                   "[expires]",
                   "[firstname]",
                   "[lastname]",
                   "[sitephonenumber]",
                   "[hoh_firstname]",
                   "[hoh_lastname]"];       

var str = "fee [sitename] [firstname] \
sdfasd [lastname] ";
var res = validateMeargeFileds(str);
console.log(res);

function validateMeargeFileds(input) {
    var re = /\[\w ]/ig;
    var isValid;
    var myArray = input.match(re);

    try{
        if (myArray.length
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...