Какой regEx я могу использовать для Разделения строки на целые слова, но только если они запускают с #?

Добавить пустые строки

Подсказка

Комментированная строка Cells(iRow + 1, cCol).Interior.ColorIndex = 3 добавляет красный цвет в первую ячейку добавленной строки, что очень помогает при попытке выяснить такой код. [ 117]

Половина версии

Sub AddBlankRows()

    Const cCol As Variant = "A"
    Const cFirstR As Long = 1

    Dim LastR As Long
    Dim iRow As Long

    LastR = Cells(Rows.Count, cCol).End(xlUp).Row

    iRow = cFirstR
    Do
        If Cells(iRow, cCol) <> "" And Cells(iRow + 1, cCol) <> "" Then
            If Cells(iRow, cCol) <> Cells(iRow + 1, cCol) Then
                Cells(iRow + 1, cCol).EntireRow.Insert xlShiftDown
                'Cells(iRow + 1, cCol).Interior.ColorIndex = 3
                LastR = LastR + 1
            End If
        End If
        iRow = iRow + 1
    Loop Until iRow > LastR

End Sub

Полная версия

Sub AddBlankRows2()

    Const cCol As Variant = "A,C"
    Const cFirstR As Long = 1

    Dim vnt As Variant
    Dim LastR As Long
    Dim iRow As Long
    Dim i As Long

    vnt = Split(cCol, ",")

    For i = 0 To UBound(vnt)

        LastR = Cells(Rows.Count, vnt(i)).End(xlUp).Row

        iRow = cFirstR
        Do
            If Cells(iRow, vnt(i)) <> "" And Cells(iRow + 1, vnt(i)) <> "" Then
                If Cells(iRow, vnt(i)) <> Cells(iRow + 1, vnt(i)) Then
                    Cells(iRow + 1, vnt(i)).EntireRow.Insert xlShiftDown
                    'Cells(iRow + 1, vnt(i)).Interior.ColorIndex = i + 3
                    LastR = LastR + 1
                End If
            End If
            iRow = iRow + 1
        Loop Until iRow > LastR
    Next

End Sub
5
задан Daniel Imms 1 May 2012 в 08:08
поделиться

5 ответов

Это, кажется, работает...

c#

Regex MyRegex = new Regex("\\#\\w+");
MatchCollection ms = MyRegex.Matches(InputText);

или vb.net

Dim MyRegex as Regex = new Regex("\#\w+")
Dim ms as MatchCollection = MyRegex.Matches(InputText)

Учитывая входной текст...

"asdfas asdf #asdf asd фас df asd фас #df asd f asdf"

... это уступит....

"#asdf" и "#df"

Я предоставлю Вам, что это не получает Вас, массив строк, но MatchCollection является счетным и быть достаточно хорошим - также.


Кроме того, я добавлю, что получил это с помощью Экспресса. который, кажется, свободен. Это было очень полезно в создании c#, в котором я очень беден. (Т.е. это сделало выход для меня.) (Если кто-либо думает, что я должен удалить это псевдообъявление затем, прокомментировать, но я думал, что это могло бы быть полезно :) Хорошие времена)

4
ответ дан 14 December 2019 в 13:51
поделиться

Так как Вы хотите включать слова в разделение, необходимо использовать что-то как

"\b#\w+\b"

Это включает фактическое слово там в выражение. Однако я не уверен, что это - то, что Вы хотите. Вы могли обеспечить пример входа и желаемого вывода?

1
ответ дан 14 December 2019 в 13:51
поделиться

Использование PHP's preg_match_all():

$text = 'Test #string testing #my test #text.';
preg_match_all('/#[\S]+/', $text, $matches);

echo '<pre>';
print_r($matches[0]);
echo '</pre>';

Выводы:

Array
(
    [0] => #string
    [1] => #my
    [2] => #text.
)
1
ответ дан 14 December 2019 в 13:51
поделиться

Вот код в JavaScript:

text = "what #regEx can I use to #split a #string into whole words but only" 
// what #regEx can I use to #split a #string into whole words but only"
text.match(/#\w+/g);
// [#regEx,#split,#string]
0
ответ дан 14 December 2019 в 13:51
поделиться

В Microsoft regex ароматы, Попытка: "\#:w"

Это работало на меня, использование Находит в Visual Studio. Я не знаю, как это переведет в класс Regex.

Править: Обратную косую черту глотали.

0
ответ дан 14 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: