01-29-2010 1:41 PM
Hi Gurus
How can i Pick the data from the string using regular expressions. for ex:
1) 10000-san0001
2) 3000000-rani0001
3) 30-super003
its doesnt mainain how many characters.
like this i got string. now i only want after the symobl( -) text (san
rani
super) .how can i pick that
can anyone provide me regular expressions.
Thanks & Regards
Sandya
Edited by: sandya rani on Jan 29, 2010 2:51 PM
01-29-2010 1:55 PM
01-29-2010 2:12 PM
You can also use SPLIT.
split lv_string at '-' into lv_str1 lv_str2.
write lv_str2.
01-29-2010 2:14 PM
Hi,
Pls find the below logic where str1 wwil hold text data.
data: l_string type string,
str1 TYPE string,
str2 TYPE string.
l_string = '3000000-rani0001'.
SPLIT l_string AT '-' INTO: str1 str2 .
clear: l_string,str1.
SPLIT str2 AT '0' INTO: str1 l_string.
write:/ str1.
01-30-2010 3:34 PM
Hi lokesh
thanks for ur reply .i need only text .i cant use this statement SPLIT str2 AT '0' INTO: str1 l_string. coz it does not maintain "0" alwasy please see the emple.
1) 10000-san2001
2) 3000000-ran10001
3) 30-super3003
4)4000000000-naga100001.
5)4-swarna10000000001.
i only want 1)san
2)ran
3)super
4)naga
5)swarna
01-30-2010 6:29 PM
Try this,
l_string = '3000000-rani0001'.
SPLIT l_string AT '-' INTO str1 str2 .
replace all occurrences of REGEX '[/d]' in str with space.
write str2.
01-30-2010 7:33 PM
Hi Kesav
i tried .its not working .output is coming like this ex: rani0001
01-31-2010 4:55 AM
Try this
lv_string = '3000000-rani0001'.
SPLIT lv_string AT '-' INTO str1 str2 .
lv_len = strlen( str2 ).
FIND REGEX '([[:alpha:]]*)' IN str2 IGNORING CASE MATCH OFFSET lv_moff MATCH LENGTH lv_mlen.
lv_length = lv_len - lv_mlen.
lv_out = str2+lv_mlen(lv_length).
write lv_out.
if you need the text then
FIND REGEX '(*[[:/d:]])' IN str2 MATCH OFFSET lv_moff MATCH LENGTH lv_mlen.
lv_out = str2+0(lv_mlen).
try also
Replace all occurrences of REGEX '(*[[:/d:]])' IN str2 with space.
Edited by: Keshav.T on Jan 31, 2010 10:53 AM
01-29-2010 2:15 PM
Try a substring_after function like described in [substring, substring_... - Substring Functions|http://help.sap.com/abapdocu_70/en/ABENSUBSTRING_FUNCTIONS.htm] in [Regular Expressions|http://help.sap.com/abapdocu_70/en/ABENREGULAR_EXPRESSIONS.htm]
resultstring = substring_after( val = inputstring sub = '-' ).
Regards,
Raymond
02-02-2010 9:39 AM
REPORT ZTEST.
data: str1 TYPE string,
str2 TYPE string,
str3 TYPE string,
lenth TYPE string,
str4 TYPE string,
temp type i value '0'.
data: ii type i value '0',
jj type i value '1'.
Data : begin of itab OCCURS 0,
l_string type string,
end of itab.
itab-l_string = '3000000-GUNDALA20001'.
append itab.
clear itab.
itab-l_string = '2045677-iCVj1001'.
append itab.
clear itab.
itab-l_string = '3000-ragh30001'.
append itab.
clear itab.
loop at itab.
MOVE 0 TO ii.
MOVE 1 TO jj.
SPLIT itab-l_string AT '-' INTO: str1 str2 .
clear: itab-l_string,str1.
lenth = strlen( str2 ).
while temp < lenth.
str4 = str2+ii(jj).
if str4 CA 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' or str4 CA 'abcdefghijklmnopqrstuvwxyz'.
if sy-subrc = 0.
CONCATENATE str3 str4 into str3.
endif.
ii = ii + 1.
ENDIF.
temp = temp + 1.
ENDWHILE.
write: / str3.
clear: itab, ii, jj,str1, str2, str3, str4,temp, lenth.
Endloop.
02-02-2010 9:51 AM
Hi avoid complications and use this.
data: str1 TYPE string,
str2 TYPE string.
Data : begin of itab OCCURS 0,
l_string type string,
end of itab.
itab-l_string = '3000000-GUNDALA20001'.
append itab.
clear itab.
itab-l_string = '2045677-iCVj1001'.
append itab.
clear itab.
itab-l_string = '3000-ragh30001'.
append itab.
clear itab.
loop at itab.
SPLIT itab-l_string AT '-' INTO: str1 str2 .
if str2 ca '1234567890'.
write / str2+sy-fdpos(*).
endif.
Endloop.