Бесплатно напишу регулярное выражение. Часть 2.

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Всем привет. Помогите решить задачу.
Есть текст:
Здание, назначение: жилое, площадь: 50.00 кв. м, кадастровый номер: 69:46:0090760:219, земельный участок, назначение: для индивидуального жилищного строительства, площадь: 440.00 кв. м, кадастровый номер: 69:46:0090760:20, Тверская область, г. Ржев
Пример 2
Нежилое помещение, назначение: нежилое помещение, площадь: 140.1 кв. м, кадастровый номер: 33:22:032051:257
Пример 3
Здание нежилое, площадью 78,80 кв.м., кад. № 29:18:110501:236, адрес: Архангельская область, Устьянский район, д. Юрятинская
Пример 4
Нежилое здание, общая площадь – 17 780,4 кв.м., к. н. 77:01:0004044:1082
2. Нежилое здание, общая площадь – 9 392,8 кв.м., к. н. 77:01:0004044:1083
3. Нежилое здание, общая площадь – 715,1 кв.м., к. н. 77:01:0004044:1084
4. Право долгосрочной аренды земельного участка общей площадью 16736 кв.м., к. н. 77:01:0004044:1. Категория земель: земли населенных пунктов; разрешенное использование: эксплуатации земельных участков предприятий
Пример 5
Нежилое здание, общая площадь – 17 780,4 кв.м., к. н. 77:01:0004044:1082
2. Нежилое здание, общая площадь – 9 392,8 кв.м., к. н. 77:01:0004044:1083
3. Нежилое здание, общая площадь – 715,1 кв.м., к. н. 77:01:0004044:1084
4. Право долгосрочной аренды земельного участка общей площадью 16736 кв.м., к. н. 77:01:0004044:1. Категория земель: земли населенных пунктов; разрешенное использование: эксплуатации земельных участков предприятий
____________________

Задача вытаскивать кадастровый номер привязываясь к двоеточию, возможно ли? Потому-что вариации написания слова кадастровый номер много, а сам номер стандартно написан через двоеточия
Искомая фраза начинает и заканчивается на цифру, содержит внутри только набор из цифр и двоеточий, при чем минимум хоть одно двоеточия должно быть обязательно (это чтобы исключить ошибочное попадание обычных номерных строк типа "345345345345"):
C#:
\d[\d:]+:[\d:]+\d
 
  • Спасибо
Реакции: shell

shell

Client
Регистрация
16.05.2016
Сообщения
114
Благодарностей
4
Баллы
18
Искомая фраза начинает и заканчивается на цифру, содержит внутри только набор из цифр и двоеточий, при чем минимум хоть одно двоеточия должно быть обязательно (это чтобы исключить ошибочное попадание обычных номерных строк типа "345345345345"):
C#:
\d[\d:]+:[\d:]+\d
Да, работает, шикарно, спасибо!
А можно минимум два двоеточия как-то указать или все три? Чтобы исключить вероятность попадания каких-то еще значений.

Из википедии:
Согласно Приказу Министерства экономического развития Российской Федерации «Об утверждении порядка кадастрового деления территории Российской Федерации, порядка присвоения объектам недвижимости кадастровых номеров, номеров регистрации, реестровых номеров границ», кадастровый номер земельного участка выглядит так: АА:ВВ:CCCCСCC:КК, где
  • ААкадастровый округ.
  • ВВкадастровый район.
  • CCCCCCСкадастровый квартал состоит из 6 или 7 цифр.
  • ККномер земельного участка.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Да, работает, шикарно, спасибо!
А можно минимум два двоеточия как-то указать или все три? Чтобы исключить вероятность попадания каких-то еще значений.

Из википедии:
Согласно Приказу Министерства экономического развития Российской Федерации «Об утверждении порядка кадастрового деления территории Российской Федерации, порядка присвоения объектам недвижимости кадастровых номеров, номеров регистрации, реестровых номеров границ», кадастровый номер земельного участка выглядит так: АА:ВВ:CCCCСCC:КК, где
  • ААкадастровый округ.
  • ВВкадастровый район.
  • CCCCCCСкадастровый квартал состоит из 6 или 7 цифр.
  • ККномер земельного участка.
Вот по такой точной схеме регуляка. Логику надеюсь вы поняли.
Код:
\d{1,2}:\d{1,2}:\d{6,7}:\d{1,4}
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Solus

Client
Регистрация
14.04.2014
Сообщения
378
Благодарностей
120
Баллы
43
(\d+|\d:\d|\ ){9,}(?=(\s+|\.|,))
 
  • Спасибо
Реакции: Ramuchi

Deadman

Client
Регистрация
24.09.2011
Сообщения
75
Благодарностей
3
Баллы
8
Здравствуйте, может кто подскажет как в одно действие сделать следующее:
к примеру есть
<p style="text-align: center;">
<p>
<p >
<p style=" >

как это всё привести к общему <p>, кроме, скажем <p style="text-align: center;">?
всё заменить могу через <p.*?> а вот исключение прописать что-то не выходит
хотелось бы понять принцип исключения в исключении)
 

Solus

Client
Регистрация
14.04.2014
Сообщения
378
Благодарностей
120
Баллы
43
<p.{1,}> меняя цифровое значение, можно исключить всё что идет полсе "p" в количестве 1 и выше или полсе запятой установить ограничение количества.
Проверьте в тестере рег. выражений, увидите как работает.
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Привет, а для Java смог бы написать регулярку?
 

Solus

Client
Регистрация
14.04.2014
Сообщения
378
Благодарностей
120
Баллы
43

shell

Client
Регистрация
16.05.2016
Сообщения
114
Благодарностей
4
Баллы
18
Подскажите, нужен код, чтобы выполнить Trim нескольким переменным одновременно в С#
Можно ли это в одном кубике реализовать?
 

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
381
Баллы
63
Подскажите, нужен код, чтобы выполнить Trim нескольким переменным одновременно в С#
Можно ли это в одном кубике реализовать?
C#:
project.Variables["Peremennaya1"].Value = project.Variables["Peremennaya1"].Value.Trim();
project.Variables["Peremennaya2"].Value = project.Variables["Peremennaya2"].Value.Trim();
project.Variables["Peremennaya3"].Value = project.Variables["Peremennaya3"].Value.Trim();
 

shell

Client
Регистрация
16.05.2016
Сообщения
114
Благодарностей
4
Баллы
18
А есть общий код для всех разом переменных, чтобы не перечислять?
 

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
381
Баллы
63
А есть общий код для всех разом переменных, чтобы не перечислять?
C#:
var variables = project.Variables.ToArray();
foreach (var variable in variables){
string variableName = new Regex(@"(?<=\[).*(?=,)").Match(variable.ToString()).ToString();   
project.Variables[variableName].Value = project.Variables[variableName].Value.Trim();
}
Считываем имена всех переменных в проекте и прогоняем их через трим.
 
  • Спасибо
Реакции: shell, Sergodjan и orka13

shell

Client
Регистрация
16.05.2016
Сообщения
114
Благодарностей
4
Баллы
18
C#:
var variables = project.Variables.ToArray();
foreach (var variable in variables){
string variableName = new Regex(@"(?<=\[).*(?=,)").Match(variable.ToString()).ToString();  
project.Variables[variableName].Value = project.Variables[variableName].Value.Trim();
}
Считываем имена всех переменных в проекте и прогоняем их через трим.
Шикарно! Спасибо!
 

shell

Client
Регистрация
16.05.2016
Сообщения
114
Благодарностей
4
Баллы
18
А еще помогите, есть ли вариант выполнить замену определенного символа или слова во всех переменных проекта одним кодом?
 

Deadman

Client
Регистрация
24.09.2011
Сообщения
75
Благодарностей
3
Баллы
8
<p.{1,}> меняя цифровое значение, можно исключить всё что идет полсе "p" в количестве 1 и выше или полсе запятой установить ограничение количества.
Проверьте в тестере рег. выражений, увидите как работает.
чутка не то, из моего примера нужно убрать все возможные варианты <p>, кроме <p style="text-align: center;">
 

neon51r

Client
Регистрация
24.03.2020
Сообщения
27
Благодарностей
8
Баллы
3


есть таблица -
<tbody>
<tr role="row" class="odd"><td class="sorting_1">25524003</td><td>27.03.2020 12:36</td><td>текст 1</td></tr>
<tr role="row" class="even"><td class="sorting_1">25521602</td><td>27.03.2020 11:17</td><td>5текст 2</td></tr>
</tbody>

такис строк много
как можно вытянуть первую ячейку с классом sorting_1
нужно получить эти номера и потом закинуть ее в список.

спасибо..
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113


есть таблица -
<tbody>
<tr role="row" class="odd"><td class="sorting_1">25524003</td><td>27.03.2020 12:36</td><td>текст 1</td></tr>
<tr role="row" class="even"><td class="sorting_1">25521602</td><td>27.03.2020 11:17</td><td>5текст 2</td></tr>
</tbody>

такис строк много
как можно вытянуть первую ячейку с классом sorting_1
нужно получить эти номера и потом закинуть ее в список.

спасибо..
Банально через конструктор регулярок (клавиша F3 в проджектмейкере):
Код:
(?<=<td\ class="sorting_1">).*?(?=</td)
Но такое лучше искать не регулярками а в DOM-модели страницы через xPath или конструктор действий.
 

neon51r

Client
Регистрация
24.03.2020
Сообщения
27
Благодарностей
8
Баллы
3
Банально через конструктор регулярок (клавиша F3 в проджектмейкере):
Код:
(?<=<td\ class="sorting_1">).*?(?=</td)
Но такое лучше искать не регулярками а в DOM-модели страницы через xPath или конструктор действий.
я пробовал, но видимо еще не научился)
конструктор как то не так ищет.
я привык на jq искать, а тут немного нетак, синтаксис немного отличается, в связи с этим и затуп.
пока решил, видимо через костыли, но буду смотеть в эту сторону. спасибо!
 
Регистрация
12.07.2014
Сообщения
916
Благодарностей
373
Баллы
63
я пробовал, но видимо еще не научился)
конструктор как то не так ищет.
я привык на jq искать, а тут немного нетак, синтаксис немного отличается, в связи с этим и затуп.
пока решил, видимо через костыли, но буду смотеть в эту сторону. спасибо!
А чего не так то с конструктором?
регулярка.png
 

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63
Всем хай.
Есть три одинаковых html блока, нужно взять последний блок(выделенные строки), единственное что отличает последний блок от остальных, то что после него идёт строка <section class="yandex" id="d1"> реально это сделать регуляркой?

C#:
<div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
            
                       <div>11</div>
                       <div>22</div>
 
    </div>
 </div>
 
  <div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
            
                       <div>33</div>
                       <div>44</div>
 
    </div>
 </div>
 
  <div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
            
                       <div>55</div>
                       <div>66</div>
 
    </div>
 </div>
 <section class="yandex" id="d1">
 
Регистрация
12.07.2014
Сообщения
916
Благодарностей
373
Баллы
63
Всем хай.
Есть три одинаковых html блока, нужно взять последний блок(выделенные строки), единственное что отличает последний блок от остальных, то что после него идёт строка <section class="yandex" id="d1"> реально это сделать регуляркой?

C#:
<div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
           
                       <div>11</div>
                       <div>22</div>

    </div>
</div>

  <div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
           
                       <div>33</div>
                       <div>44</div>

    </div>
</div>

  <div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
           
                       <div>55</div>
                       <div>66</div>

    </div>
</div>
<section class="yandex" id="d1">
Попробуйте
C#:
<div\ class="catalog"\ id\ ="1"\ itemscope\ itemtype="https://schema\.org/">[\w\W]{1,150}(?=\ <section\ class="yandex"\ id="d1">)

регулярка.png
 
  • Спасибо
Реакции: Sanekk

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63
Попробуйте
C#:
<div\ class="catalog"\ id\ ="1"\ itemscope\ itemtype="https://schema\.org/">[\w\W]{1,150}(?=\ <section\ class="yandex"\ id="d1">)

спасибо работает, но только зависит от кол-во символов в искомом блоке, верно?
Я когда задавал вопрос написал что блоки одинаковые , это не совсем так, они одинаковые по построению, а кол-во <div> со значениями может сильно отличатся, причем заранее совсем не известно даже примерное кол-во.
HTML:
<div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
            
                       <div>11</div>
                       <div>22</div>
 
    </div>
 </div>
 
  <div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
            
                       <div>33</div>
                       <div>44</div>
 
    </div>
 </div>
 
  <div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
            
                       <div>55</div>
                       <div>66</div>
                        <div>77</div>
                        <div>88</div>
                        <div>99</div>
    </div>
 </div>
 <section class="yandex" id="d1">
 
Регистрация
12.07.2014
Сообщения
916
Благодарностей
373
Баллы
63
спасибо работает, но только зависит от кол-во символов в искомом блоке, верно?
Я когда задавал вопрос написал что блоки одинаковые , это не совсем так, они одинаковые по построению, а кол-во <div> со значениями может сильно отличатся, причем заранее совсем не известно даже примерное кол-во.
HTML:
<div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
           
                       <div>11</div>
                       <div>22</div>

    </div>
</div>

  <div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
           
                       <div>33</div>
                       <div>44</div>

    </div>
</div>

  <div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
           
                       <div>55</div>
                       <div>66</div>
                        <div>77</div>
                        <div>88</div>
                        <div>99</div>
    </div>
</div>
<section class="yandex" id="d1">
Да зависит от количества символов
[\w\W]{1,150}
В скобках квантификатора задается диапазон от и до.
По другому я не знаю как за раз взять.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
спасибо работает, но только зависит от кол-во символов в искомом блоке, верно?
Я когда задавал вопрос написал что блоки одинаковые , это не совсем так, они одинаковые по построению, а кол-во <div> со значениями может сильно отличатся, причем заранее совсем не известно даже примерное кол-во.
HTML:
<div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
           
                       <div>11</div>
                       <div>22</div>

    </div>
</div>

  <div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
           
                       <div>33</div>
                       <div>44</div>

    </div>
</div>

  <div class="catalog" id ="1" itemscope itemtype="https://schema.org/">
            <div class="Content">
           
                       <div>55</div>
                       <div>66</div>
                        <div>77</div>
                        <div>88</div>
                        <div>99</div>
    </div>
</div>
<section class="yandex" id="d1">
количество каких дивов?
 

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
  • Спасибо
Реакции: Sanekk

Rogger

Client
Регистрация
04.10.2018
Сообщения
43
Благодарностей
2
Баллы
8
HTML:
                                                    </td>
                                                   
                                                                                                            <td class="has-value">
                                                                                                                            <p class="gray-text">0</p>
                                                                <p class="dark-text">0</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value">
                                                                                                                            <p class="gray-text">0</p>
                                                                <p class="dark-text">0</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop">
                                                                                                                            <p class="gray-text">0</p>
                                                                <p class="dark-text">14 374</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop">
                                                                                                                            <p class="gray-text">14 374</p>
                                                                <p class="dark-text">0</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet">
                                                                                                                            <p class="gray-text">0</p>
                                                                <p class="dark-text">73 480</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet">
                                                                                                                            <p class="gray-text">73 480</p>
                                                                <p class="dark-text">146 633</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet table-mobile">
                                                                                                                            <p class="gray-text">146 633</p>
                                                                <p class="dark-text">234 134</p>
                                                                                                                    </td>
                                                                                                    </tr>
                                                                                            <tr>
                                                    <td>
                                                     
                                                    </td>
                                                   
                                                    <td>
                                                     
                                                    </td>
                                                   
                                                                                                            <td class="has-value">
                                                                                                                            <p class="gray-text">65</p>
                                                                <p class="dark-text">37</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value">
                                                                                                                            <p class="gray-text">37</p>
                                                                <p class="dark-text">63</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop">
                                                                                                                            <p class="gray-text">63</p>
                                                                <p class="dark-text">64</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop">
                                                                                                                            <p class="gray-text">64</p>
                                                                <p class="dark-text">46</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet">
                                                                                                                            <p class="gray-text">46</p>
                                                                <p class="dark-text">53</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet">
                                                                                                                            <p class="gray-text">53</p>
                                                                <p class="dark-text">854</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet table-mobile">
                                                                                                                            <p class="gray-text">854</p>
                                                                <p class="dark-text">1 173</p>
                                                                                                                    </td>
                                                                                                    </tr>
                                                                                            <tr>
                                                    <td>
Не могу "достать" последние числовые значения в каждом "абзаце", именно эти:
234 134 (29 строка)
1 173 (67 строка)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)