Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2017-12-27 12:29:10

  sexy69 - Użytkownik

sexy69
Użytkownik
Zarejestrowany: 2017-12-27

Jak powinien wyglądać kod RegExp?

x1 = ".,:-!?text. Txt"
x2 = ".,:-!?Text: txt"

Chciałbym usunąć z powyższego tekstu znaki "[?!;:,\.-]", które nie są literami
i nie są cyframi [^a-ząćęłńóśźż0-9A-ZĄĆĘŁŃÓŚŹŻ]" z lewej strony przed wyrazem "text"

Jak powinien wyglądać kod?
myRegExp.Pattern = "???????"

Offline

 

#2  2017-12-27 14:00:53

  seler - Użytkownik

seler
Użytkownik
Zarejestrowany: 2012-05-15

Re: Jak powinien wyglądać kod RegExp?

taki sed załatwia sprawę, przynajmniej dla twoich przykładów:

sed 's/^\([^"]*"\)[?!;:,\.-]*\(Text.*\)$/\1\2/gI'

Ostatnio edytowany przez seler (2017-12-27 14:02:09)


a to feler westchnął seler

Offline

 

#3  2017-12-27 15:10:37

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: Jak powinien wyglądać kod RegExp?

W pythonie może to wyglądać tak:

Kod:

import re
pat = re.compile('([^\w\d]*)')
x1 = r'.,:-!?text. Txt'
s = re.sub(pat, '', x1,count=1)

python regex - ([^\w\d]*)(.*)
pcre - ([^[:alnum:]]*)(.*)


[url=http://www.debian.org/][img]http://www.debian.org/logos/openlogo-nd-50.png[/img][/url]

Offline

 

#4  2017-12-27 15:52:13

  sexy69 - Użytkownik

sexy69
Użytkownik
Zarejestrowany: 2017-12-27

Re: Jak powinien wyglądać kod RegExp?

To używam do VBS script
a to sprawdzam pattern: http://regexstorm.net/tester

ten pasuje
([^\w\d]*) , wielkie dzięki

na testerze zaznacza również wszystko pomiędzy wyrazami
a w VBS jest OK.

Ostatnio edytowany przez sexy69 (2017-12-27 16:06:57)

Offline

 

#5  2017-12-27 17:34:50

  sexy69 - Użytkownik

sexy69
Użytkownik
Zarejestrowany: 2017-12-27

Re: Jak powinien wyglądać kod RegExp?

jest problem:
z wyrazu !żółć
usunięte zostaje wszystko,

Ostatnio edytowany przez sexy69 (2017-12-27 17:35:13)

Offline

 

#6  2017-12-27 20:15:45

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: Jak powinien wyglądać kod RegExp?

To kewstia obsługi unicode. Jak to jest w VBS to nie wiem. W pythonie to się załatiwa tak:

Kod:

In [11]: import re
    ...: pat = re.compile('([^\w\d]*)', re.UNICODE)
    ...: x1 = r'.,:-!?text. Txt'
    ...: s = re.sub(pat, '', x1,count=1)
    ...: 

In [12]: x2 = '!żółć'

In [13]: s = re.sub(pat, '', x2, count=1)

In [14]: 

In [14]: s
Out[14]: 'żółć'

[url=http://www.debian.org/][img]http://www.debian.org/logos/openlogo-nd-50.png[/img][/url]

Offline

 

#7  2017-12-27 20:53:11

  sexy69 - Użytkownik

sexy69
Użytkownik
Zarejestrowany: 2017-12-27

Re: Jak powinien wyglądać kod RegExp?

Nic z tego nie da się. zaadoptować.

W skrypcie VBS też mam to rozwiązane:

Biorę do pętli całe zdanie i sprawdzam po kolei od lewej czy są znaki do usunięcia.
Jeśli tak to usuwam i sprawdzam następny znak aż natrafię na literę albo liczbę to wchodzę z pętli.

RegExp załatwiłby to dwiema liniami tekstu.

myRegExp.Pattern = "??????????"
Text(nr) = myRegExp.Replace(Text(nr), "")

krócej i szybciej.

Sądziłem, że w RegExp można każdy kod dopasować do sytuacji ale,
zaczynam wątpić w jego uniwersalność.

Ostatnio edytowany przez sexy69 (2017-12-27 20:54:01)

Offline

 

#8  2017-12-27 21:43:32

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: Jak powinien wyglądać kod RegExp?

Umieść to co chcesz wyrzucić:
([!?=:;.]*).*


[url=http://www.debian.org/][img]http://www.debian.org/logos/openlogo-nd-50.png[/img][/url]

Offline

 

#9  2017-12-28 09:11:35

  sexy69 - Użytkownik

sexy69
Użytkownik
Zarejestrowany: 2017-12-27

Re: Jak powinien wyglądać kod RegExp?

taki powinien być efekt:

.,:-!?[b]żółć. Txt[/b] -> [b]żółć. Txt[/b]
.,:-!?[b]Żółć: tx[/b]t -> [b]Żółć: txt[/b]


to nie działa: "([!?=:;.]*).*

Text(nr) = ".,:-!?żółć. Txt"
myRegExp.Pattern = "([!?=:;.]*).*"
Set poszukiwane = myRegExp.Execute(Text(nr))
wynik = poszukiwane.Item(0)
'powinno być: żółć. Txt
a jest wszystko (nic nie usunięte.)

Ostatnio edytowany przez sexy69 (2017-12-28 09:20:50)

Offline

 

#10  2017-12-28 09:40:04

  sexy69 - Użytkownik

sexy69
Użytkownik
Zarejestrowany: 2017-12-27

Re: Jak powinien wyglądać kod RegExp?

wykryłem to:
http://regexstorm.net/tester?p=%28%5b%5b%5cw%5d.*%5d*%29&i=.%2c%3a-!%3f24.+%c5%bc%c3%b3%c5%82%c4%87%0d%0a.%2c%3a-!%3f%c5%bb%c3%b3%c5%82%c4%87%3a+24

teraz tylko odwrócić całe zaznaczenie i będzie OK.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.013 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00014 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00069 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.206.194.134' WHERE u.id=1
0.00246 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.206.194.134', 1594715822)
0.00028 SELECT * FROM punbb_online WHERE logged<1594715522
0.00047 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=30155 AND t.moved_to IS NULL
0.00011 SELECT search_for, replace_with FROM punbb_censoring
0.00171 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=30155 ORDER BY p.id LIMIT 0,25
0.00309 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30155
Total query time: 0.009 s